2009-12-23 45 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);