我是Android开发新手。现在我试图使用sqlite db。 我使用sqlite manager创建了一个数据库sqlite文件。 我通过/ data / data / packagename / dbname将它导入到项目中,它在模拟器中工作正常,但如果我在设备中发布应用程序崩溃,我不知道发生了什么以及为什么会发生。有什么建议吗?
答案 0 :(得分:4)
您不能以这种方式使用外部数据库。当您将其导入项目时,并不意味着它在之后的所有设备中都可用(假设您使用了DDMS)。这意味着DB仅可用于该特定仿真器。请按照以下链接了解如何将外部数据库添加到您的应用程序..
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
答案 1 :(得分: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();
}
}
}
答案 2 :(得分:2)
查看此链接,如果您在Android中使用自己的数据库,这将非常有用。
在本教程中,您必须将数据库放在项目的assets文件夹中,数据库将自动转移到您设备的数据库文件夹中。http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
答案 3 :(得分:2)
请参阅https://github.com/jgilfelt/android-sqlite-asset-helper以获取帮助程序库来处理此问题。
(我没有亲自使用过这个图书馆,但我昨天在搜索其他内容时遇到了它。但它似乎可以做你需要的东西。)