Hola, tenemos la solución a tu búsqueda, desplázate y la hallarás un poco más abajo.
Solución:
Resolví ese problema por:
-
agregando
file.db
en la carpeta proyecto/activos; -
escribiendo la siguiente clase:
public class LinnaeusDatabase extends SQLiteOpenHelper private static String DATABASE_NAME = "Dragonfly.db"; public final static String DATABASE_PATH = "/data/data/com.kan.linnaeus/databases/"; private static final int DATABASE_VERSION = 1; private SQLiteDatabase dataBase; private final Context dbContext; public LinnaeusDatabase(Context context) super(context, DBActivity.DatabaseName, null, DATABASE_VERSION); this.dbContext = context; DATABASE_NAME = DBActivity.DatabaseName; // checking database and open it if exists if (checkDataBase()) openDataBase(); else try this.getReadableDatabase(); copyDataBase(); this.close(); openDataBase(); catch (IOException e) throw new Error("Error copying database"); Toast.makeText(context, "Initial database is created", Toast.LENGTH_LONG).show(); private void copyDataBase() throws IOException InputStream myInput = dbContext.getAssets().open(DATABASE_NAME); String outFileName = DATABASE_PATH + DATABASE_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0) myOutput.write(buffer, 0, length); myOutput.flush(); myOutput.close(); myInput.close(); public void openDataBase() throws SQLException String dbPath = DATABASE_PATH + DATABASE_NAME; dataBase = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE); private boolean checkDataBase() SQLiteDatabase checkDB = null; boolean exist = false; try String dbPath = DATABASE_PATH + DATABASE_NAME; checkDB = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY); catch (SQLiteException e) Log.v("db log", "database does't exist"); if (checkDB != null) exist = true; checkDB.close(); return exist;
Buen artículo en el blog de ReignDesign titulado Uso de su propia base de datos SQLite en aplicaciones de Android. Básicamente, crea previamente su base de datos, la coloca en su directorio de activos en su apk y, en el primer uso, copia en el directorio “/data/data/YOUR_PACKAGE/databases/”.
He hecho esto en el pasado almacenando un archivo JSON en la aplicación en el res/raw
recursos y luego cargar el archivo en la primera carga. Desde allí, puede usar el modo de inserción masiva para importar entradas por lotes. Vea mi cargador de base de datos para Unidades como un ejemplo de esta técnica. Un beneficio de la res/raw
El estilo es que puede usar el sistema de selección de recursos de Android para localizar los datos en diferentes regiones, por lo que podría tener una base de datos diferente (o parte de ella) para diferentes idiomas o regiones.
También puede colocar un volcado de SQL sin procesar en un archivo similar y cargarlo en la primera carga. Puede obtener el archivo de los recursos mediante openRawResource(int). Recomendaría esto en lugar de almacenar un archivo de base de datos sqlite prefabricado para aumentar la compatibilidad entre las versiones de sqlite, así como para facilitar el mantenimiento de la base de datos (desde un punto de vista del ciclo de vida de desarrollo de aplicaciones).
Cuando cargue cosas a granel, asegúrese de usar transacciones, ya que eso ayudará a acelerar las cosas y hará que la carga sea más confiable.
Aquí tienes las reseñas y valoraciones
Si tienes alguna incertidumbre y disposición de ascender nuestro tutorial eres capaz de escribir una observación y con gusto lo leeremos.