2013-01-10 111 views
1

我有一個使用的SQLite數據庫瀏覽器創建了一個數據庫顯示在此博客的Android應用程序:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/的Android - SQLite數據庫瀏覽器不能正確更新

首先,我創建了一個數據庫有兩個表與表中的一個只有一個條目,只是爲了檢查我是否正確地創建了數據庫。這工作。

之後,我填充其中一個表格,其中有10個條目,保存,然後將數據庫複製到資產文件夾(覆蓋前一個),運行應用程序,然後查詢第2到第10個條目。該應用程序強制關閉給我的CursorIndexOutOfBounds錯誤。

由此,我推斷,該應用程序在某種程度上無法使用我創建了新的數據庫,並仍然使用舊的(這是覆蓋)。

是否有辦法來解決和/或解決這一問題?應用程序似乎正在使用它接收的第一個數據庫版本,即使該數據庫被新數據庫覆蓋。

+0

你使用'SQLiteOpenHelper'嗎? –

+0

http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

+0

@CL。我正在使用SQLite數據庫瀏覽器。 – Razgriz

回答

1

這聽起來像你的第一個數據庫,一個只有一個單一的入口,仍然存在於你的應用程序的數據庫文件夾下的/數據/數據/你的包名(在Android設備上)。如果數據庫不存在於設備上,該教程的代碼將僅複製資產文件夾中的數據庫(請參閱教程中的checkDataBase()方法)。因此,從/ data/data/your-package-name中刪除數據庫(使用代碼或使用root權限),確保更新的數據庫文件位於assets文件夾中,然後再次運行。這將確保資產文件夾中的數據庫被複制到設備上。

此外,確保DB_PATH等於context.getApplicationInfo().dataDir + "/databases/"而不是"/data/data/YOUR_PACKAGE/databases/"

+0

如何以編程方式將其刪除? – Razgriz

+0

另外,當我將其更改爲新的DB_PATH時,它會提供NullPointerException,因爲它無法實例化活動。 – Razgriz

+1

這應該工作:context.deleteDatabase(DATABASE_NAME); –