Mon application dispose d'une base de données SQLite dans le dossier des ressources. Lorsque l'utilisateur lance mon application, la base de données est créée et les tables aussi.Table manquante dans SQLite avec une version spécifique de HTC DESIRE HD
Cela fonctionne très bien avec beaucoup de périphériques (Nexus One, Htc Magic, SGS, X10 ... et même Htc Desire HD v2.2). Mon application fonctionne avec toutes les versions d'Android (testé sur mon appareil (1.6, 2.2, 2.2.1 Htc magique) et sur l'émulateur (v1,5 jusqu'à v2.3).
J'ai juste un problème avec HTC DESIRE HD v2.2.1 1.72.405.3
Le logcat.
android.database.sqlite.SQLiteException: pas de tableau: LISTE:, lors de la compilation: sélectionnez _id de à Android LISTE. app.ActivityThread.performLaunchActivity (ActivityThread.java:2833) at android.app.ActivityThread .handleLaunchActivity (ActivityThread.java:2854) at android.app.ActivityThread.access $ 2300 (ActivityThread.java:136) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2179) at android.os. Handler.dispatchMessage (Handler.java:99) à android.os.Looper.loop (Looper.java:143) à android.app.ActivityThread.main (ActivityThread.java:5068) à java.lang.reflect. Method.invokeNative (méthode native) à java.lang.reflect.Method.invoke (Method.java:521) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) at com .android.internal.os.ZygoteInit.main (ZygoteInit.java:616) à dalvik.system.NativeStart.main (méthode native) Causé par: android.database.sqlite.SQLiteException: aucune table de ce type: LISTE:, lors de la compilation: sélectionnez _id de LISTE at android.database.sqlite.SQLiteCompiledSql.native_compile (méthode native) at android.database.sqlite.SQLiteCompiledSql .compile (SQLiteCompiledSql.java:91) à android.database.sqlite.SQLiteCompiledSql. (SQLiteCompiledSql.java:64) à android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:80) à android.database.sqlite .SQLiteQuery. (SQLiteQuery.java:46) à android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:53) à android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1417) à androïde. database.sqlite.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1387) ... 11 plus
Ma demande de créer la base de données, mais il ne copie pas les tables du fichier du dossier actif data\data\packagename\databases\mydatabase
.
Mon code:
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
if(dbExist){
//do nothing - database already exist
}else{
//By calling this method and empty database will be created into the default system path
//of your application so we are gonna be able to overwrite that database with our database.
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private void copyDataBase() throws IOException{
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))!= -1){
if (length > 0){
myOutput.write(buffer, 0, length);
} }
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
Je pense que la fonction copydatabase
a un problème, mais je ne vois pas.
Ce code fonctionne correctement avec tous les périphériques sauf le HTC DESIRE HD v2.2.1 1.72.405.3.
Quels sont les problèmes susceptibles d'exister ici pour le HTC Desire avec la version donnée ci-dessus? Comment peut-on y remédier?
Votre code posté concerne la création d'une base de données. Votre erreur concerne une instruction ** SELECT ** d'une table de votre base de données. –
Oui, mon erreur concerne une instruction SELECT car ma base de données est créée lorsque l'utilisateur fait sa première requête SQL. La base de données est créée mais pas la table LISTE par exemple, donc l'erreur d'instruction SELECT – William