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
- Acceso a la aplicación de Android Lite para Android
- Cómo utilizar TRIGGER en Android SQLite
- Android: insertar varias filas en la base de datos sqlite no funciona
- Base de datos local Unity SQLite
- Drop y recrear la tabla SQLite
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..
- Cursor while loop devuelve cada valor pero el último
- RealmObject AND Parcelable
- Intel XDK: Conexión de la aplicación móvil a una base de datos
- Unir tablas en SQLite.Net con LINQ en xamarin.android no es compatible
- Android: ¿Dónde se almacenan los archivos de base de datos?
- ¿Cómo descargar una base de datos SQLite desde un dispositivo Android?
- Solicitud de SQL con el caso en orden por tiros "(1) primer término ORDER BY no coincide con ninguna columna en el conjunto de resultados"
- Cómo dividir valores separados por comas en SQLite?
Tengo la respuesta
De aquí..
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
- Cómo mantener un archivo jar externo, pero todavía uso de sus clases en mi proyecto de Android?
- Deshacerse de: AllCapsTransformationMethod 'llamador no habilitar cambios de longitud'