2

我是android开发的新手。现在我正在尝试使用 sqlite db。我使用 sqlite manager 创建了一个数据库 sqlite 文件。我通过 /data/data/packagename/dbname 将它导入到项目中,它在模拟器中运行良好,但是如果我在设备中发布应用程序崩溃,我不知道会发生什么以及为什么会发生。有什么建议吗?

4

4 回答 4

4

您不能以这种方式使用外部数据库。当您将它导入您的项目时,这并不意味着它在之后的所有设备中都可用(假设您为此使用了 DDMS)。这意味着 DB 仅适用于该特定模拟器。按照以下链接了解如何将外部数据库添加到您的应用程序。

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

于 2012-05-23T12:06:59.937 回答
3
private void StoreDatabase() {
     File DbFile=new File("data/data/packagename/DBName.sqlite");
     if(DbFile.exists())
     {
         System.out.println("file already exist ,No need to Create");
     }
     else
     {
         try 
         {
             DbFile.createNewFile();
             System.out.println("File Created successfully");
             InputStream is = this.getAssets().open("DBName.sqlite");
             FileOutputStream fos = new FileOutputStream(DbFile);
             byte[] buffer = new byte[1024];
                int length=0;
                while ((length = is.read(buffer))>0)
                {
                fos.write(buffer, 0, length);
                }
             System.out.println("File succesfully placed on sdcard");
                //Close the streams
                fos.flush();
                fos.close();
                is.close();
         }
         catch (IOException e)
         {
             e.printStackTrace();
         }
   }    
    }
于 2012-05-23T12:19:36.093 回答
2

查看此链接,如果您在 Android 中使用自己的数据库,这将非常有帮助。

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

在本教程中,您必须将数据库放在项目的资产文件夹中,数据库将自动转移到您设备的数据库文件夹中。

于 2012-05-23T12:10:22.560 回答
2

请参阅https://github.com/jgilfelt/android-sqlite-asset-helper以获取帮助程序库来解决此问题。

(我没有亲自使用过这个库,但我昨天在搜索其他东西时遇到了它。不过,它似乎可以满足您的需求)。

于 2012-05-23T12:18:58.017 回答