A la hora de montar una BD interna en Android utilizamos
SQLite.
A su vez, podemos llevar a cabo la programación de nuestra BD utilizando diferentes paradigmas; pero yo prefiero usar el paradigma de Orientación a Objetos que es más sencillo y más fácil de entender (para mí).
La Base de Datos solo nos ocupará un fichero java, así que todas las operaciones de recuperación, inserción, borrado y actualización sobre las tablas de nuestra BD las podremos hacer en el mismo fichero.
Como siempre, os mostraré cómo se hace mediante un pequeño ejemplo: haremos una pequeña base de datos para libros. Los libros deberán tener un id, nombre, fecha de edición y nombre del autor.
1. Creación de la BD y de las Tablas
public class BDSQLite_Library extends SQLiteOpenHelper
{
// Nombre de la tabla
private String tabla_libros = "books";
// Creamos la Base de Datos con un nombre
public BDSQLite(Context context, String nombre)
{
super(context, nombre, null, 1);
}
// Este método se ejecuta solo una vez al instalarse la aplicación
// y creará las tablas de la BD
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE "+ tabla_libros +" ("+
"_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
"nombre TEXT, fecha_edicion TEXT, nombre_autor TEXT)");
}
}
NOTA: si modificamos la estructura de alguna tabla de la Base de Datos tendremos que des-instalar y volver a instalar la app.
2. Añadir y Borrar
2.1 Añadir: INSERT INTO
public void addBook (String bookName, String dateEdition, String authorName)
{
SQLiteDatabase db = getWritableDatabase();
db.execSQL("INSERT INTO "+ tabla_libros +" VALUES ( null, '"+ bookName
+"', '"+ dateEdition + "', '"+ authorName +"')");
db.close();
}
2.2 Borrar: DELETE FROM
public void removeBook (int id)
{
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM "+ tabla_libros +" WHERE _id="+
Integer.toString(id) );
db.close();
}
Aquí podemos complicarnos todo lo que queramos a la hora de borrar un libro en concreto. Por ejemplo, podemos elegir utilizar el nombre del libro en vez del ID; o ambos campos.
3. Recuperación de Información: SELECT
3.1 Devolvemos un libro
public HashMap<String,String> getBook (int id)
{
HashMap<String,String> libro = new HashMap<String,String>();
SQLiteDatabase db = getReadableDatabase();
String consulta = "SELECT * FROM "+ tabla_libros +
" WHERE _id="+ Integer.toString(id);
Cursor cursor = db.rawQuery(consulta, null);
while (cursor.moveToNext())
{
libro.put("Id", cursor.getString(0));
libro.put("NombreLibro", cursor.getString(1));
libro.put("Fecha", cursor.getString(2));
libro.put("Autor", cursor.getString(3));
}
return libro ;
}
3.2 Devolvemos todos los libros
public ArrayList<HashMap<String,String>> getAllBooks ()
{
ArrayList<HashMap<String,String>> contenedor = new ArrayList<HashMap<String,String>>();
SQLiteDatabase db = getReadableDatabase();
String consulta = "SELECT * FROM "+ tabla_libros;
Cursor cursor = db.rawQuery(consulta, null);
while (cursor.moveToNext())
{
HashMap<String,String> elemento = new HashMap<String,String>();
elemento.put("Id", cursor.getString(0));
elemento.put("NombreLibro", cursor.getString(1));
elemento.put("Fecha", cursor.getString(2));
elemento.put("Autor", cursor.getString(3));
contenedor.add(elemento);
}
cursor.close();
db.close();
return contenedor;
}
4. Actualización de un libro
public void upgradeBook (int id, String bookName, String bookDate, String author)
{
String consulta_parte1 = "UPDATE "+tabla_libros+" SET ";
String consulta_parte2 = "WHERE _id="+Integer.toString(id) ;
int num_nulos = 3;
if(bookName != null)
{
consulta_parte1 += "nombre='"+ bookName +"' ";
num_nulos -- ;
}
if(bookDate != null)
{
consulta_parte1 += "fecha_edicion='"+ bookDate +"' ";
num_nulos -- ;
}
if(author != null)
{
consulta_parte1 += "nombre_autor='"+ author +"' ";
num_nulos -- ;
}
if(num_nulos != 3)
{
String consulta_final = consulta_parte1 + consulta_parte2;
SQLiteDatabase db = getWritableDatabase();
db.execSQL(consulta_final);
db.close();
}
}
En el siguiente enlace os dejo el fichero java: BDSQLite.
No hay comentarios:
Publicar un comentario