Mi aplicación tiene una base de datos SQLite en la carpeta de activos. Cuando el usuario inicia mi aplicación, se crea la base de datos y también las tablas.tabla faltante en SQLite con la versión específica de HTC DESIRE HD
Esto funciona bien con muchos dispositivos (Nexus One, Htc Magic, SGS, X10 ... e incluso Htc Desire HD v2.2). Mi aplicación funciona con todas las versiones de Android (probado en mi dispositivo (1.6, 2.2, 2.2.1 HTC Magic) y en el emulador (v1,5 hasta v2.3).
tengo sólo un problema con HTC DESIRE HD v2.2.1 1.72.405.3
El logcat:.
android.database.sqlite.SQLiteException: no hay tal tabla: LISTE:, durante la compilación: seleccionar _id de LISTE al androide. app.ActivityThread.performLaunchActivity (ActivityThread.java:2833) en android.app.ActivityThread .handleLaunchActivity (ActivityThread.java:2854) en android.app.ActivityThread.access $ 2300 (ActivityThread.java:136) en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2179) en android.os. Handler.dispatchMessage (Handler.java:99) en android.os.Looper.loop (Looper.java:143) en android.app.ActivityThread.main (ActivityThread.java:5068) en java.lang.reflect. Method.invokeNative (Método nativo) en java.lang.reflect.Method.invoke (Method.java:521) en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) en com .android.internal.os.ZygoteInit.main (ZygoteInit.java:616) en dalvik.system.NativeStart.main (Método nativo) Causado por: android.database.sqlite.SQLiteException: no existe dicha tabla: LISTE:, al compilar: seleccione _id de LISTE en android.database.sqlite.SQLiteCompiledSql.native_compile (Método nativo) en android.database.sqlite.SQLiteCompiledSql .compile (SQLiteCompiledSql.java:91) en android.database.sqlite.SQLiteCompiledSql. (SQLiteCompiledSql.java:64) en android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:80) en android.database.sqlite .SQLiteQuery. (SQLiteQuery.java:46) en android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:53) en android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1417) en androide. database.sqlite.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1387) ... 11 más
Mi solicitud de crear la base de datos pero no copia las tablas del archivo de la carpeta de recursos en data\data\packagename\databases\mydatabase
.
Mi código:
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();
}
creo que la función copydatabase
tiene un problema, pero no lo veo.
Este código funciona bien con todos los dispositivos, excepto el HTC DESIRE HD v2.2.1 1.72.405.3.
¿Qué problemas pueden existir aquí para el HTC Desire con la versión dada anterior? ¿Cómo puede ser remediada?
Su código publicado se refiere a la creación de una base de datos. Su error se refiere a una declaración ** SELECT ** de una tabla dentro de su base de datos. –
Sí, mi error se refiere a una instrucción SELECT porque mi base de datos se crea cuando el usuario realiza su primera solicitud sql. Se creó la base de datos, pero no la tabla LISTE por ejemplo, por lo que el error SELECT – William