2011-10-13 3 views
2

J'ai un db dans le dossier des actifs qui est copié dans l'application. Cela se fait exactement de la même manière qu'ici: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/sqlite erreur setlocale

Tout fonctionne très bien dans Android 2.3.3 et supérieur mais ne fonctionne pas sur les versions ci-dessous. Ce sont les téléphones que j'ai testé l'application sur:

Samsung Galaxy S II - Android 2.3.3 - travail

Sony Ericsson néo - Android 2.3.3 - travail

LG P350 - Android 2.2. 2 - erreur de copie db

Sony Ericsson Xperia X8 - ANDROID 2.1 mise à jour 1 - erreur de copie db

Samsung GalaxyACE Android 2.2.1. - erreur de copie db

Samsung Galaxy Tab 10.1 Android 3.1 - travail

L'erreur se présente comme suit:

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

assurez-vous d'avoir une table android_metadata dans votre base de données et les paramètres régionaux définis par défaut. – Sunny

+0

la seule entrée dans android_metadata est en_US – Radek

+0

en fait vous n'avez pas besoin de créer cette table dans mon cas je crée seulement mes tables et quand je tire la base de données de l'explorateur de fichiers dans eclipse il a créé automatiquement cette table.so supprime la table android_metadata et désinstallez votre application exécutez le projet again.if vous voulez que je puisse poster le code. – Sunny

Répondre

1

Le problème ne fonctionnait pas sur les anciennes versions d'Android parce que le db était trop grand pour eux et la limite est de 18mb. Une solution à cela est de diviser les fichiers db ino 18 de 1 mb.