Uso de SQLite con Android
Ing. Alex Jimnez Alex_J2k@[Link]
Agenda
Introduccin a SQLite. Creacin de una base de datos SQLite en Android.
Aplicacin ejemplo Insercin, Consulta, Eliminacin, y Actualizacin. Uso de IDEs para SQLite.
Ing. Alex Jimnez Alex_J2k@[Link]
Introduccin a SQLite
SQLite es un motor de base de datos open source que no necesita de un servidor y acepta varias sentencias del estndar SQL-92. Esta provisto de capacidades para consulta de datos relacionales (select), manipulacin de datos (insert,delete,update) y definicin de datos (create table, create view, etc). Precisa de poca configuracin y es utilizado en dispositivos mviles. Lugar de descarga y documentacin : [Link]
Ing. Alex Jimnez Alex_J2k@[Link]
Android y SQLite
Android provee de APIs que soportan nativamente la base de datos SQLite en el paquete: [Link] Algunas de las clases y sus mtodos ms utilizadas:
Creacin y actualizacin de la base de datos:
SQLiteOpenHelper public void onCreate(SQLiteDatabase db) public void onUpgrade(SQLiteDatabase db, int verAnterior, int verNueva) public SQLiteDatabase getReadableDataBase() public SQLiteDatabase getWritableDatabase(), etc
Manipulacin/Mantenimiento de la base de datos:
SQLiteDataBase query(), execSQL(), insert(), delete(), update() beginTransaction(), endTransaction(), rawQuery(),etc..
Ing. Alex Jimnez Alex_J2k@[Link]
Creacin de una base de datos SQLite en Android
Ubicacin de la base de datos en el dispositivo/emulador:
/data/data/[Link]/databases/nombre_base_datos
Esto es posible verlo haciendo uso del DDMS (Dalvik Debug Monitor Server) en el tab File Exporer
Ing. Alex Jimnez Alex_J2k@[Link]
Creacin de una base de datos SQLite en Android
Ejemplo de base de datos:
Ing. Alex Jimnez Alex_J2k@[Link]
Ejemplo de base de datos
Ing. Alex Jimnez Alex_J2k@[Link]
Creacin de una base de datos SQLite en Android
Cuando se cree una instancia a esta clase pueden suceder cualquiera de las siguientes acciones: Si la base de datos ya existe y su versin actual coincide con la solicitada simplemente se realizar la conexin con ella. Si la base de datos existe pero su versin actual es anterior a la solicitada, se llamar automticamente al mtodo onUpgrade() para convertir la base de datos a la nueva versin y se conectar con la base de datos convertida.
Si la base de datos no existe, se llamar automticamente al mtodo onCreate() para crearla y se conectar con la base de datos creada.
Ing. Alex Jimnez Alex_J2k@[Link]
8
Creacin de una base de datos SQLite en Android
import [Link]; import [Link]; import [Link]; public class AndroidBaseDatos extends Activity { @Override public void onCreate(Bundle savedInstanceState) { [Link](savedInstanceState); setContentView([Link]); //Abrimos la base de datos 'ProductosDB' en modo escritura DatabaseHelper prodDB = new DatabaseHelper(this, "ProductosDB", null, 1); SQLiteDatabase db = [Link](); //Si hemos abierto correctamente la base de datos if(db != null) { //Insertamos 5 productos de ejemplo for(int i=1; i<=5; i++) { //Generamos los datos double precio=5*i; String descripcion = "Descripcion" + i; //Insertamos los datos en la tabla Productos [Link]("INSERT INTO Productos (descripcion,precio) " + "VALUES (" + descripcion + "," + precio +")"); } //Cerramos la base de datos [Link](); } } }
Creacin de una base de datos SQLite en Android
Para Insertar/Actualizar/Eliminar es posible utilizar el mtodo execSQL de la clase SQLiteDatabase de la siguiente forma: //Insertar un registro [Link]("INSERT INTO Productos(descripcion,precio) VALUES (Impresor Laser,120.50) "); //Eliminar un registro [Link]("DELETE FROM Productos WHERE _id=3 "); //Actualizar un registro [Link]("UPDATE Productos SET precio=precio*1.1 WHERE _id=1");
Ing. Alex Jimnez Alex_J2k@[Link]
10
Creacin de una base de datos SQLite en Android
Para consultar es posible utilizar el mtodo rawQuery de la clase SQLiteDatabase de la siguiente forma: //consultar un registro Cursor c = [Link](" SELECT descripcion,precio FROM Productos WHERE _id=1 "); Un objeto Cursor contiene los registros resultantes producto de la consulta ejecutada con el mtodo rawQuery() Es posible manipular un objeto Cursor mediante una serie de mtodos como por ejemplo: moveToFirst(): mueve el puntero del cursor al primer registro devuelto. moveToNext(): mueve el puntero del cursor al siguiente registro devuelto.
11
Creacin de una base de datos SQLite en Android
Los mtodos moveToFirst() y moveToNext() devuelven TRUE en caso de haber realizado el movimiento correspondiente del puntero sin errores, es decir, siempre que exista un primer registro o un registro siguiente, respectivamente. Recorrido del objeto Cursor del caso anterior: //Nos aseguramos de que existe al menos un registro if ([Link]()) { //Recorremos el cursor hasta que no haya ms registros do { String descripcion= [Link](0); double precio = [Link](1); } while([Link]()); }
12
Creacin de una base de datos SQLite en Android
Otra alternativa disponible en la API de Android es utilizar los mtodos insert(), update() y delete() proporcionados tambin con la clase SQLiteDatabase. Estos mtodos permiten realizar las tareas de insercin, actualizacin y eliminacin de registros de una forma parametrizada , separando tablas, valores y condiciones en parmetros independientes de estos mtodos.
De igual forma se cuenta con el mtodo query() que puede recibir varios parmetros como group by,having, order by; para retornar un objeto Cursor y poder recorrerlo como en el ejemplo anterior.
13
Aplicacin ejemplo
Ing. Alex Jimnez Alex_J2k@[Link]
14
Uso de IDEs para SQLite
SQLite Studio: [Link]
Ing. Alex Jimnez Alex_J2k@[Link]
15
Uso de IDEs para SQLite
SQLite Administrator: [Link]
Ing. Alex Jimnez Alex_J2k@[Link]
16