Saltar al contenido

¿Cómo puedo incrustar una base de datos SQLite en una aplicación?

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:

  1. agregando file.db en la carpeta proyecto/activos;

  2. 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *