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