У моего приложения есть база данных SQLite в папке ресурсов.Когда пользователь запускает мое приложение, создается база данных и таблицы.
Это прекрасно работает на многих устройствах (Nexus One, Htc Magic, SGS, X10… и даже Htc Desire HD v2.2),Мое приложение работает со всеми версиями Android (проверено на моем устройстве (1.6, 2.2, 2.2.1 Htc Magic) и на эмуляторе (v1,5 до v2.3).
У меня просто проблема с HTC DESIRE HD v2.2.1 1.72.405.3.
Logcat:
android.database.sqlite.SQLiteException: нет такой таблицы: LISTE:, whileкомпиляция: выберите _id из LISTE в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2833) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2854) в android.app.ActivityThread.access $ 2300 (ActivityThread.java:136) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2179) в 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 (собственный метод) в java.lang.reflect.Method.invoke (Method.java:521) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) в dalvik.system.NativeStart.main (собственный метод) Причины: android.database.sqlite.SQLiteException: нет такихtable: LISTE:, при компиляции: выберите _id из LISTE в android.database.sqlite.SQLiteCompiledSql.native_compile (собственный метод) в 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.SQLDid.запрос (SQLiteDirectCursorDriver.java:53) в android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1417) в android.database.sqlite.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1387) ... еще 11
Мое приложение создает базу данных, но не копирует таблицы файла папки ресурсов в data\data\packagename\databases\mydatabase
.
Мой код:
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();
}
Я думаю, что у функции copydatabase
есть проблема, но я не вижу.
Этот код прекрасно работает со всеми устройствами, кроме HTC DESIRE HD v2.2.1 1.72.405.3.
Какие проблемы могут возникнуть у HTC Desire с указанной версией выше?Как это можно исправить?