Base de datos pre-poblada de Android
Estoy trabajando en una aplicación de Android que necesitará varias entradas (una sola tabla, con 1000-10000 filas) pobladas en la base de datos de esa aplicación antes de que el usuario pueda utilizar esa aplicación. He mirado alrededor de algunos tutoriales y no estoy seguro de la mejor manera de hacer esto. ¿Debo comprobar si la base de datos existe cada vez que se inicia la aplicación y, si no está allí, crearla e insertar los miles de registros que necesito? ¿O hay una mejor manera de manejar este problema? Idealmente, podría ser incluido como parte del proceso de instalación de la aplicación, pero no estoy seguro si esto es posible. Cualquier comentario sería muy apreciado.
- Cómo recuperar datos de la base de datos sqlite en android y mostrarla en TextView
- ¿Necesitamos usar el hilo de fondo para recuperar datos usando firebase?
- Acceso a multithread Android SQlite
- Advertencia: No codifique "/ data /"; Utilice Context.getFilesDir (). GetPath () en su lugar
- La mejor manera de almacenar datos en android
- Android.database.CursorIndexOutOfBoundsException: Índice 0 solicitado, con un tamaño de 0
- Android / Java: acceso al mismo objeto de base de datos SQLite desde múltiples actividades
- ActiveAndroid Excepción SQLite 'No such table'
- Ningún setter / campo para la advertencia Base de datos Firebase Recuperar datos Llenar Listview
- ¿Cómo eliminar el objeto de Realm Database Android?
- Cómo y cuándo cerrar la base de datos sqlite en la aplicación con un montón de actividades y servicios
- Android, dos aplicaciones de una base de datos?
- ¿Cuál es el mecanismo de setNotificationUri?
Este enlace tiene una buena respuesta Enviar una aplicación con una base de datos
La forma en que voy aquí es enviar una base de datos prepopulada en la carpeta de activos. Puede colocar los archivos allí y utilizarlos tal y como están. Tenga en cuenta, sin embargo, que hay un límite de tamaño de 1 MB, así que quizás tendrá que dividir archivos o comprimirlos.
La compresión es muy útil y bien soportada por el propio sistema operativo.
Espero que esto fue de alguna ayuda 🙂
Aquí está un ejemplo de cómo crear y poblar una base de datos, usted puede apenas hacer esto en la instalación de la aplicación, ésta crea solamente una entrada sin embargo así que puede ser ineficaz para lo que usted quiere hacer.
private static class settingsDatabaseHelper extends SQLiteOpenHelper{ //SQL String for creating the table required private static final String CREATE_SETTINGS_TABLE = "CREATE TABLE tbl_settings(" + "_ID INTEGER PRIMARY KEY AUTOINCREMENT," + "VOIPUSERNAME TEXT," + "VOIPAUTHID TEXT," + "PASSWORD TEXT," + "VOIPDISPLAYNAME TEXT," + "SIPPROXYSERVER TEXT," + "SIPREGISTRAR TEXT," + "SIPREALM TEXT," + "EXPIRESTIME INTEGER);"; //constructor public settingsDatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_SETTINGS_TABLE); ContentValues initialValues = new ContentValues(); initialValues.put("VOIPUSERNAME", "xxxxx"); initialValues.put("VOIPAUTHID", "xxxxxxxxxx"); initialValues.put("PASSWORD", "xxxxxx"); initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx"); initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx"); initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx"); initialValues.put("SIPREALM", "xxxxxxxxxx"); initialValues.put("EXPIRESTIME", xxxxxxxxxxx); Log.d("1.6", "gets to here"); db.insert(SETTINGS_TABLE, null, initialValues); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE); onCreate(db); } } //end helper class }
JavaDoc de SQLiteOpenHelper:
Una clase auxiliar para administrar la creación de bases de datos y la administración de versiones. Crea una subclase que implementa onCreate (SQLiteDatabase), onUpgrade (SQLiteDatabase, int, int) y opcionalmente onOpen (SQLiteDatabase), y esta clase se encarga de abrir la base de datos si existe, creándola si no lo hace y actualizándola según sea necesario . Transacciones se utilizan para asegurarse de que la base de datos siempre está en un estado razonable.
Para ver un ejemplo, consulte la clase NotePadProvider en la aplicación de ejemplo NotePad, en el directorio samples / del SDK.
Así que si se extiende esta clase, tiene 3 métodos que se llamará en algunos casos y se puede elegir, ¿qué hacer para. Esa es la mejor práctica
- Error en la compilación de gradle después de actualizar Android Studio con log4j
- Mal comportamiento de Backstack de la actividad cuando la actividad destruida