Es normal que para nuestras aplicaciones queramos trabajar con una base de datos previamente creada con datos insertados. Los pasos a seguir serán los siguientes:
- Crear la base de datos SQLite e insertar los datos que queramos. Podeís usar para ello alguna herramienta como SQLite Studio.
- Copiamos la base de datos creada a la carpeta de nuestro proyecto Android assets.
- Ahora en la clase que vamos a usar para interactuar con la base de datos lo que se va a hacer es lo siguiente:
- Verificar si ya existe la base de datos. Si esto ociurre ya ha sido creada por lo que no será necesario crearla de nuevo. En este caso debemos tener en cuenta que la ruta a la base de datos de nuestra aplicación viene dada por "context.getApplicationInfo().dataDir + "/databases/" + DATABASE_NAME" tal y como podeís ver en el código de ejemplo.
- Si no existe simplemente copiaremos el archivo que previamente hemos colocado en la carpeta assets en la ruta vista con anterioridad.
package com.losga.pedidos.com.losga.db;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.res.AssetManager;
import android.util.Log;
import com.losga.pedidos.dto.Entity;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
/**
* Created by Luis J. L.G.
*/
public class DBHelper extends SQLiteOpenHelper {
private Context context;
public class DBHelper extends SQLiteOpenHelper {
private Context context;
// Nombre de la base de datos
private static final String DATABASE_NAME = "ljlg.db";
private static final String DATABASE_NAME = "ljlg.db";
// Ruta donde se encuntra la base de datos
private static String path;
private static final int DATABASE_VERSION = 1;
public DBHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
try {
this.context = context;
// Ruta donde va a estar la base de datos en Android
path = context.getApplicationInfo().dataDir + "/databases/" + DATABASE_NAME;
copyDB();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void copyDB() throws IOException {
private static String path;
private static final int DATABASE_VERSION = 1;
public DBHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
try {
this.context = context;
// Ruta donde va a estar la base de datos en Android
path = context.getApplicationInfo().dataDir + "/databases/" + DATABASE_NAME;
copyDB();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void copyDB() throws IOException {
// Verificar si ya existe la base de datos
File dbArchivo = new File(path);
if (!dbFile.exists()) {
InputStream inputStream = context.getAssets().open("MiDB.db");
// Se crea el archivo para la base de datos
OutputStream outputStream = new FileOutputStream(path);
byte[] buffer = new byte[4096];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}
}
}
if (!dbFile.exists()) {
InputStream inputStream = context.getAssets().open("MiDB.db");
// Se crea el archivo para la base de datos
OutputStream outputStream = new FileOutputStream(path);
byte[] buffer = new byte[4096];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}
}
}
No hay comentarios:
Publicar un comentario