2010-04-04 41 views
0

當我將此代碼添加到我的Android 2.1的Java應用程序,它失敗:SQLite數據庫創建失敗,文件不清

db=SQLiteDatabase.openOrCreateDatabase("Locations", null); 

我是否需要特殊的權限創建一個數據庫,或任何人可以提供建議如何找出哪裏出了問題?

這裏是logcat的輸出:

04-04 15:04:28.702: DEBUG/ddm-heap(703): Got feature list request 
04-04 15:04:29.642: ERROR/Database(703): sqlite3_open_v2("Locations", &handle, 6, NULL) failed 
04-04 15:04:29.652: DEBUG/AndroidRuntime(703): Shutting down VM 
04-04 15:04:29.662: WARN/dalvikvm(703): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
04-04 15:04:29.662: ERROR/AndroidRuntime(703): Uncaught handler: thread main exiting due to uncaught exception 
04-04 15:04:29.702: ERROR/AndroidRuntime(703): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gormtech.zyx.RejseplanQuick/com.xxx.zyx.xxx.HelloAndroid}: android.database.sqlite.SQLiteException: unable to open database file 
+1

您能否更具體地說「發生故障」,比如發佈Java堆棧跟蹤?您可以通過'adb logcat',DDMS或Eclipse中的DDMS透視圖訪問該堆棧跟蹤。 FWIW,我真的推薦你使用'SQLiteOpenHelper',而不是像你手動打開數據庫那樣,這樣你可以獲得更新模式的幫助。 – CommonsWare 2010-04-04 12:21:58

+0

在開始使用諸如SQLiteOpenHelper之類的不明方法之前,理解事情的工作方式對我來說非常重要。否則,我可能很容易結束一個不穩定或緩慢的應用程序,而不知道爲什麼。 – 2010-04-04 13:02:13

+0

我添加了logcat輸出。錯誤消息是它無法打開數據庫文件,並且GUI行爲是強制關閉。 – 2010-04-04 13:09:02

回答

2

任何應用程序可以使一個SQLiteDatabase沒有任何特殊的權限。

我有點拋出你的代碼片斷,因爲在我的文檔/ SDK中openOrCreateDatabase(on Context)有三個參數:名稱,操作模式和工廠。 https://developer.android.com/reference/android/content/Context.html

看到'adb logcat'的輸出將會非常明顯。從控制檯運行adb應用程序,或者在Eclipse中調出LogCat窗口(它可能有助於切換到DDMS透視圖)。運行應用程序,獲取失敗並在此處粘貼更晚的行。

+0

我沒有使用Context類,而是SQLiteDatabase類,它只需要2個參數。 – 2010-04-04 12:59:21

+0

這可能是你困難的根源。從快速查看源代碼看來,SQLiteDatabase版本的openOrCreateDatabase採用的'path'參數是'數據庫的完整路徑'。然而,上下文版本似乎將名稱轉換爲帶有getDatabasePath()的完整路徑。 http://www.google.com/codesearch/p?hl=en#uX1GffpyOZk/core/java/android/database/sqlite/SQLiteDatabase.java&l=760 它滋生通過對構造: HTTP: //www.google.com/codesearch/p?hl=zh_CN#uX1GffpyOZk/core/java/android/database/sqlite/SQLiteDatabase.java&l=1686 – 2010-04-04 13:28:27

+0

它似乎在此處記錄爲一個錯誤:http://代碼。 google.com/p/android/issues/detail?id=949 – 2010-04-04 13:32:49