2011-08-04 134 views
1

我(重新)編寫使用SQLite數據庫來存儲各種物品,此刻我試圖打開數據庫的Android應用程序,但我得到以下logcat的錯誤:無法正常訪問數據庫

08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.os.Looper.loop(Looper.java:123) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at dalvik.system.NativeStart.main(Native Method) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793): Caused by: android.database.sqlite.SQLiteException: unable to open database file 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1960) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:887) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at myApps.ShoppingList.Database.openDatabase(Database.java:83) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at myApps.ShoppingList.RoomList.onCreate(RoomList.java:25) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
08-04 13:05:52.735: ERROR/AndroidRuntime(7793):  ... 11 more 

我現在的代碼很不完整,我只是添加了一些小部件,並試圖讓它們正常運行,直到我得到的錯誤與缺少的代碼有關。 (確保我在應用程序中添加的代碼在我添加代碼之前工作並丟失)

我檢查了我正在訪問正確的路徑並且數據庫名稱正確,我也嘗試過得到新的應用程序來打開舊的數據庫文件(它仍然適用於舊的應用程序),但我得到了相同的logcat錯誤,所以我導致它相信這是與其他一些代碼有關的。我真的不確定該從哪裏出發。如果您需要更多信息或代碼,我會根據要求發佈。感謝所有幫助你們能給:)

下面是導致問題的ATM兩類:

這是列表類,它最終會在數據庫中有所有項目的列表複選框在列表項的右側,檢查時,它會從列表中刪除的項目,並把它放在不同的目錄(目前並不重要)上

這裏是訪問數據庫中的類:

回答

1

爲什麼使用SQLiteOpenHelper而不是使用SQLiteDatabase.open? 你爲什麼要硬編碼數據庫路徑?

DATABASE_DIRECTORY = "data/data/myApps.ShoppingList/database/"; 

在很多設備上,我看到它實際上是.../databases /,但無論如何,都使用getDatabasePath來獲取它。

+0

老實說,我不確定,因爲我的項目合作伙伴處理應用程序的數據庫端。如何使用「SQLiteDatabase.open」 – Ian

+1

SQLiteDatabase db = SQLiteDatabase.open(getDatabasePath(「foo.db」),null,SQLiteDatabase.OPEN_READONLY); ... –