2009-12-23 76 views
25

到目前为止,我们已经在android中开发了在运行时创建数据库的应用程序。我们想知道我们如何在我们的android应用程序中访问预建或现有的数据库/ sqlite文件?请提供详细信息如何访问Android中现有的sqlite数据库?

+0

@Yaqub Ahmad感谢您的编辑,使其更加清晰。 – 2011-12-19 12:13:01

+0

你会想尝试[android sqlite资产助手](https://github.com/jgilfelt/android-sqlite-asset-helper)。它使它成为一块蛋糕。 – craned 2016-01-06 18:11:09

回答

32

查看android.database.sqlite.SQLiteDatabase的文档。

特别是,有一个openDatabase()命令可以在给定文件路径的情况下访问数据库。

SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, 0); 

只要指定的路径到你的数据库的path变量,它应该工作。

+1

假设我的资产文件夹中有我的数据库文件,那么我将提供什么路径给路径变量? – 2009-12-23 14:01:05

+5

看到这个其他,相关问题: http://stackoverflow.com/questions/513084/how-to-ship-an-android-application-with-a-database 总之,你不能做到这一点直。您需要将数据从您的APK中复制到/ data中的新文件中,然后您可以直接打开它。 此博客文章有更多信息: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ – 2009-12-29 00:53:59

0

在下面的示例中,首先复制您的SDCARD并在变量“DBNAME”中为其指定路径。 如果你直接将它拉到SD卡上,它将会像“/sdcard/persons.db”一样。

+0

您可以扩展吗?我不完全清楚这是如何解决问题的。你的答案的第一个版本中的链接也被破坏 - 你能解决它吗? – JonasCz 2016-04-18 14:36:42

3

我都遵循同样的道路,发现两个问题:

  1. 包括您创建,并确保它是列 一部分,当你查询任何表返回任何表的_id领域。
  2. 您可能会遇到类似的错误无法打开数据库。关闭 吧。。这是因为我们从现有的 文件复制数据库,而不是在由sqlite android API创建的数据库顶部创建表,并且android_metadata表可能不存在。对于 创建它只是在你的数据库运行下面的查询:

    CREATE TABLE android_metadata (locale TEXT);

    并添加相应的语言环境,例如en_US

+0

我可以在现有的SQLite数据库上运行该SQL,还是应该在通过从/ assets /中的现有数据库复制数据创建的数据库上运行该数据库? – marienke 2013-07-16 13:53:01

+0

它应该在“资产”文件夹中的现有数据库上运行,或者一旦在应用程序数据库上复制,但我想在复制之前让数据库中的表更容易 – gantzer89 2013-07-17 15:54:53

0

用这个应用程序访问数据库:

Context context = getApplicationContext(); 
context.getDatabasePath(DataBaseHelper.database_Name);