No se copia la base de datos de la carpeta de activos al dispositivo

Tengo un archivo .db en mi carpeta de assets . Lo he copiado a la carpeta data/data/<packagename>/databases/ en el emulador y su funcionamiento bien ..

Pero cuando lo ejecuto en el dispositivo que la fuerza se cierra. Está mostrando

 SQLite exception: no such table: tbl_user 

Aquí está mi código

 public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper() { super(dataContext, DATABASE_NAME, null, 1); DB_PATH = "/data/data/" + dataContext.getApplicationContext().getPackageName() + "/databases/"; Log.d("PATH", DB_PATH); boolean dbExist = checkDataBase(); if (!dbExist) { this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { Log.d("Error", e.toString()); } } } private void copyDataBase() throws IOException { // TODO Auto-generated method stub InputStream inFile = dataContext.getAssets().open(DATABASE_NAME); String outFileName = DB_PATH + DATABASE_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = inFile.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } // Close the streams myOutput.flush(); myOutput.close(); inFile.close(); } private boolean checkDataBase() { // TODO Auto-generated method stub File dbFile = new File(DB_PATH + DATABASE_NAME); return dbFile.exists(); } 

Debo tener que hacer algo más para copiar ese db para el dispositivo ???

Gracias..

Tengo la respuesta

De aquí..

http://www.anddev.org/networking-database-problems-f29/missing-table-in-sqlite-with-specific-version-of-desire-hd-t50364.html

Era el problema con la versión 2.3.6 … estaba trabajando con otros dispositivos … solo añadía tres líneas para resolver el problema …

 boolean dbExist = checkDataBase(); SQLiteDatabase db_Read = null; if (!dbExist) { db_Read = this.getReadableDatabase(); db_Read.close(); try { copyDataBase(); } catch (IOException e) { Log.d("Error", e.toString()); } } 

Simplemente cambie la extensión de archivo de base de datos .db en la carpeta de activos a .png o cualquier otro formato comprimido que funcionará en 2.1, 2.2 y dispositivos anteriores

  • Android - Base de datos con ContentValue con error booleano?
  • Cómo incrementar el campo en la base de datos sqlite android
  • ¿Cómo agregar sub consulta en SQLITE Android junto con 'IN'?
  • Android sqlite - selecciona registros donde el campo es nulo o vacío
  • Necesito el equivalente SQLite de MySQL para trabajar con unix timestamps
  • Cómo lograr lo siguiente en Realm para android
  • Consulta SQLite SQLiteLog (1) no such Column:
  • Compruebe si el cursor tiene resultados
  • Clave Extranjera de SQLite
  • ¿Existe un caché de memoria para SQLite en Android y cómo liberarlo o borrarlo?
  • La tabla de actualización utilizando el método rawQuery () no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.