Precarga de datos en Android

Al instalar una nueva aplicación en Android, muchas veces se necesitará que ya vengan precargados ciertos datos en la base de datos de la misma. Suele ser tablas maestras, que ya deberán estar en cualquier instalación limpia que se haga, por lo que se deberá habilitar una precarga de datos.
Se puede hacer los inserts dentro del código, por ejemplo en la clase que hereda de SQLLiteOpenHelper. Esto es lo más inmediato, pero también puede ensuciar el código y si se está todavía desarrollando la aplicación, puede hacerse un poco tedioso.
Para facilitarlo, se puede extraer todos los inserts en un fichero a parte, como si de un script se tratara. Esto es más fácil de mantener y no ensucia el código.
El fichero con el script, debería estar en la carpeta assets y debería tener un insert por línea. Un ejemplo de fichero de precarga de datos, podría ser:

INSERT into Tabla (Campo1,Campo2,Campo3) VALUES ('UNO','UNO','UNO');
INSERT into Tabla (Campo1,Campo2,Campo3) VALUES ('DOS','DOS','DOS');
INSERT into Tabla (Campo1,Campo2,Campo3) VALUES ('TRES','TRES','TRES');

Para realizar la precarga de datos en Android, simplemente habrá que ejecutar el siguiente código. En él se abre el fichero llamado carga.sql y se va ejecutando línea a línea, todo en una única transacción. De la misma manera se puede ejecutar updates o deletes, siempre y cuando cada uno ocupe una línea.

// Ejecutar fichero precarga de datos
InputStream is = null;
try {
 is = this.mContext.getAssets().open("carga.sql");
 if (is != null) {
  db.beginTransaction();
  BufferedReader reader = new BufferedReader(
    new InputStreamReader(is));
    String line = reader.readLine();
    while (!TextUtils.isEmpty(line)) {
      db.execSQL(line);
      line = reader.readLine();
    }
    db.setTransactionSuccessful();
  }
} catch (Exception ex) {
  // Muestra log
} finally {
 db.endTransaction();
 if (is != null) {
  try {
    is.close();
   } catch (IOException e) {
   // Muestra log
   }
 }
}

Deja un comentario

Pin It on Pinterest