2011-10-13 57 views
2

我在資產文件夾中有一個數據庫被複制到應用程序。它的完成方式與此處完全相同:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/sqlite setlocale錯誤

它在Android 2.3.3及更高版本中都可以正常工作,但不適用於以下版本。這是我所測試過的應用程序在手機上:

三星Galaxy S II - ANDROID 2.3.3 - 工作

索尼愛立信新 - ANDROID 2.3.3 - 工作

LG P350 - ANDROID 2.2。 2 - 錯誤複製DB

索尼愛立信Xperia X8 - 的Android 2.1更新1 - 錯誤複製DB

三星GalaxyACE的Android 2.2.1。 - 錯誤複製DB

三星Galaxy Tab 10.1的Android 3.1 - 工作

錯誤如下所示:

10-13 13:03:43.773: ERROR/Database(2770): SELECT locale FROM android_metadata failed 
10-13 13:03:43.783: ERROR/Database(2770): Failed to setLocale() when constructing, closing the database 
10-13 13:03:43.783: ERROR/Database(2770): android.database.sqlite.SQLiteException: no such table: android_metadata 
10-13 13:03:43.783: ERROR/Database(2770):  at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) 
10-13 13:03:43.783: ERROR/Database(2770):  at org.com.db.DataBaseHelper.checkDataBase(DataBaseHelper.java:81) 
10-13 13:03:43.783: ERROR/Database(2770):  at org.com.db.DataBaseHelper.createDataBase(DataBaseHelper.java:42) 
10-13 13:03:43.783: ERROR/Database(2770):  at org.com.SentencesActivity.onCreate(SentencesActivity.java:49) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.os.Looper.loop(Looper.java:123) 
10-13 13:03:43.783: ERROR/Database(2770):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-13 13:03:43.783: ERROR/Database(2770):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-13 13:03:43.783: ERROR/Database(2770):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-13 13:03:43.783: ERROR/Database(2770):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
10-13 13:03:43.783: ERROR/Database(2770):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
10-13 13:03:43.783: ERROR/Database(2770):  at dalvik.system.NativeStart.main(Native Method) 
10-13 13:03:43.793: VERBOSE/Debugger(2770): Copying db 
10-13 13:03:43.893: WARN/dalvikvm(2770): threadid=1: thread exiting with uncaught exception (group=0x40020ac0) 
+0

確保您的數據庫中的android_metadata表已設置爲默認值。 – Sunny

+0

android_metadata中的唯一條目是en_US – Radek

+0

實際上,您不需要在我的情況下創建此表我只創建我的表,並且當我從eclipse中的文件資源管理器中提取數據庫時,它會自動創建此表。因此,刪除表android_metadata和卸載你的應用程序再次運行項目。如果你想我可以發佈代碼。 – Sunny

回答

1

的問題是不工作在舊版Android,因爲數據庫太大爲他們和極限是18mb。解決這個問題的方法是分割1MB的db ino 18文件。