You are on page 1of 23

UNIVERSIDAD SEOR DE SIPN

Escuela Profesional de Ingeniera de Sistemas

SESIN 07: Almacenamiento en una base de datos SQLite (Parte II)

Mg. Orleans Moiss Glvez Tapia


CIP: 171497

USS - COMPUTACIN MVIL - 2016-1 1


Consultar y recuperar registros de una base de datos SQLite

Cursor c = db.rawQuery(String sql, null);

Cursor c = db.query(tableName, tableColumns, whereClause, whereArgs, groupBy, having, orderBy);


tableName: nombre de la table.
tableColumns: array con los nombres de los campos a recuperar.
whereClause: clusula WHERE.
whereArgs: array con los argumentos variables incluidos en el WHERE (si
los hay, null en caso contrario)
groupBy: clusula GROUP BY si existe.
Having: clusula HAVING si existe.
orderBy: clusula ORDER BY si existe.
sql: comando SQL completo, donde indicamos los campos a recuperar y los
criterios de seleccin.

Cursor c = db.rawQuery(" SELECT codigo,nombre FROM Usuarios WHERE nombre=' usu1 ' ", null);

String[] args = new String[] {"usu1"};


Cursor c = db.rawQuery(" SELECT codigo,nombre FROM Usuarios WHERE nombre=? ", args);

USS - COMPUTACIN MVIL - 2016-1 2


Consultar y recuperar registros de una base de datos SQLite

Cursor c = db.rawQuery(String sql, null);

Cursor c = db.query(tableName, tableColumns, whereClause, whereArgs, groupBy, having, orderBy);


tableName: nombre de la table.
tableColumns: array con los nombres de los campos a recuperar.
whereClause: clusula WHERE, siempre debe ser un String.
whereArgs: array con los argumentos variables incluidos en el WHERE (si
los hay, null en caso contrario)
groupBy: clusula GROUP BY si existe.
Having: clusula HAVING si existe.
orderBy: clusula ORDER BY si existe.
sql: comando SQL complete, donde indicamos los campos a recuperar y los
criterios de seleccin.

String[] args = new String[] {"usu1"};


Cursor c = db.rawQuery(" SELECT codigo,nombre FROM Usuarios WHERE nombre=? ", args);

String[] campos = new String[] {"codigo", "nombre"};


String[] args = new String[] {"usu1"};

Cursor c = db.query("Usuarios", campos, nombre=?", args, null, null, null);

USS - COMPUTACIN MVIL - 2016-1 3


Consultar y recuperar registros de una base de datos SQLite

Cursor c
[0] [1] [2] [] db.rawQuery()

db.query()

String[] campos = new String[] {"codigo", "nombre"};


String[] args = new String[] {"usu1"};

Cursor c = db.query("Usuarios", campos, "nombre=?", args, null, null, null);

//Nos aseguramos de que existe al menos un registro


if (c.moveToFirst()) {
//Recorremos el cursor hasta que no haya ms registros
do {
String codigo= c.getString(0);
String nombre = c.getString(1);
} while(c.moveToNext());
}

USS - COMPUTACIN MVIL - 2016-1 4


Ejemplo 01 de SQLite (explicado paso a paso)

Crear una base de datos llamada BDUsuarios, con una tabla llamada Usuarios que contendr slo dos campos:
cdigo y nombre. Para ello, vamos a crear una clase derivada de SQLiteOpenHelper que llamaremos
AdministrarBD, donde sobrescribiremos los mtodos onCreate() y onUpgrade().
El aspecto final de la APP debe ser el siguiente:

usuarios
codigo nombre
1 Usuario 1
2 Usuario 2
3 Usuario 3
4 Usuario 4
BDUsuarios
5 Usuario 5
6 Usuario 6
7 Usuario 7

Cmo crear, actualizar, y conectar


con una base de datos SQLite?

USS - COMPUTACIN MVIL - 2016-1 5


Ejemplo de Almacenamiento de Datos en una BD SQLite (explicado paso a paso)

Para ello, vamos a crear una clase derivada de SQLiteOpenHelper que llamaremos AdministrarBD, donde
sobrescribiremos los mtodos onCreate() y onUpgrade().

AdministrarBD
activity_main.xml SQLiteOpenHelper AdministrarBD() { };
onCreate() { };
onCreate(); onUpgrade() { };
onUpgrade();
C: N:
getWritableDatabase();
getReadableDatabase();
INS ACT ELIM CONS AdministrarBD

1 usuario 1 AdministrarBD() { }; ContentValues


2 usuario 2 onCreate() { };
3 usuario 3 onUpgrade() { }; put(nomCampo,valor)
4 usuario 4
5 usuario 5
6 usuario 6 MainActivity
7 usuario 7 SQLiteDataBase
8 usuario 8 onCreate() { insert(); query();
9 usuario 9 delete(); rawQuery()
10 usuario 10 btnInserta.setOnClickListener(this); update(); close();
btnActualiza.setOnClickListener(this); execSQL();
btnElimina.setOnClickListener(this);
btnConsulta.setOnClickListener(this); Cursor
};
moveToFirst();
moveToNext();

USS - COMPUTACIN MVIL - 2016-1 6


Primera forma de implementar MainActivity.java (cuando MainActivity utiliza un bucle para ingresar los registros)

Nos olvidamos del diseo (no implementamos el archivo activity_main.xml), suponemos que solamente nos han
pedido insertar y visualizar los registros de la tabla Usuarios. Para esto nicamente implementaremos
MainActivity.java.

SQLiteOpenHelper

onCreate();
onUpgrade();

AdministrarBD

AdministrarBD() { };
onCreate() { };
onUpgrade() { };
BDUsuarios

MainActivity

usuarios onCreate() {
Transferir la base de datos a
nuestro PC y consultarla con Insertamos los registros a la tabla
cualquier administrador de bases usuarios mediante un FOR.
};
de datos SQLite (SQLiteBrowser).

USS - COMPUTACIN MVIL - 2016-1 7


a) Implementacin de la clase AdministrarBD extends SQLiteOpenHelper

public class AdministrarBD extends SQLiteOpenHelper{


String sqlCreate = "CREATE TABLE Usuarios (codigo INTEGER primary key, nombre TEXT)";

public AdministrarBD(Context context, String name, CursorFactory factory, int version) {


super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sqlCreate);
}

@Override
public void onUpgrade(SQLiteDatabase db, int versionAnterior, int versionNueva) {
db.execSQL("DROP TABLE IF EXISTS Usuarios");
db.execSQL(sqlCreate);

}
}

USS - COMPUTACIN MVIL - 2016-1 8


b) Implementacin de la clase MainActivity extends Activity
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AdministrarBD obj = new AdministrarBD(this, "DBUsuarios", null, 1);
SQLiteDatabase db = obj.getWritableDatabase();

//Si hemos abierto correctamente la base de datos


if(db != null){

//Insertamos 10 usuarios de ejemplo


for(int i=1; i<=10; i++){
//Generamos los datos
int cod = i;
String nom = "Usuario" + i;

//Insertamos los datos en la tabla Usuarios


db.execSQL("INSERT INTO Usuarios (codigo, nombre) " +
"VALUES (" + cod + ", '" + nom +"')");
}
db.close();
}
}
}

USS - COMPUTACIN MVIL - 2016-1 9


Usando la herramienta Android Device Monitor para acceder a la base de datos que hemos creado

1: Run->Run app
2: Click aqu para Transferir la base de datos
a nuestro PC y consultarla con cualquier
administrador de bases de datos SQLite
(SQLiteBrowser).

Y ahora qu? dnde est la base de datos


que acabamos de crear? cmo podemos
comprobar que todo ha ido bien y que los
registros se han insertado correctamente?

USS - COMPUTACIN MVIL - 2016-1 10


2: Tools->Android->Android Device Monitor

Todas las bases de datos SQLite creadas por aplicaciones Android se almacenan
en la memoria del telfono en un fichero con el mismo nombre de la base de
datos, situado en una ruta que sigue el siguiente patrn:

USS - COMPUTACIN MVIL - 2016-1 11


2: Tools->Android->Android Device Monitor

/data/data/paquete.java.de.la.aplicacion/databases/nombre_base_datos
En el caso de nuestro ejemplo, la base de datos se almacenara en la ruta:
/data/data/sqlite.proyectosesion05_sqlite1/databases/DBUsuarios

USS - COMPUTACIN MVIL - 2016-1 12


3: Click en Pull a file from the device

El fichero de la base de datos podemos transferirlo a nuestro PC utilizando el


botn de descarga situado en la esquina superior derecha del explorador de
archivos.

USS - COMPUTACIN MVIL - 2016-1 13


3: Click en Pull a file from the device

Junto a este botn aparecen otros dos para hacer la operacin contraria (copiar
un fichero local al sistema de archivos del emulador) y para eliminar ficheros del
emulador.

USS - COMPUTACIN MVIL - 2016-1 14


3: Click en Pull a file from the device

Asumiendo que el archivo generado lo guardamos en:


D:/CLASES ANDROID/SESIN 05/DBUsuarios.db

USS - COMPUTACIN MVIL - 2016-1 15


D:/CLASES ANDROID/SESIN 05/DBUsuarios.db

Una vez descargado el fichero a nuestro sistema local, podemos


utilizar cualquier administrador de SQLite para abrir y consultar la base
de datos, por ejemplo SQLite Browser.

USS - COMPUTACIN MVIL - 2016-1 16


Segunda forma de implementar MainActivity.java

USS - COMPUTACIN MVIL - 2016-1 17


Insertar registros en la tabla Usuarios

USS - COMPUTACIN MVIL - 2016-1 18


Eliminar registros de la tabla Usuarios

USS - COMPUTACIN MVIL - 2016-1 19


Modificar registros de la tabla Usuarios

USS - COMPUTACIN MVIL - 2016-1 20


Actualizar registros de la tabla Usuarios

USS - COMPUTACIN MVIL - 2016-1 21


Ejercicios Propuestos

1. Aadir la columna password a la tabla usuarios, luego Implementar una app que permita Insertar,
Actualizar, Eliminar y Consultar la tabla usuarios. La jerarqua de clases necesarias para la solucin
es la siguiente :

Aadir un EditText para el


password

Se debe mostrar tambin la


columna password

USS - COMPUTACIN MVIL - 2016-1 22


Ejercicios Propuestos

2. Implementar una app que permita :


Crear una base de datos SQLite llamada BDEmpresa con dos tablas, como lo indica el siguiente
modelo relacional:

Empleados
Departamentos

0..m 1

Insertar, actualizar, eliminar registros de la tabla Empleados mediante una interfaz grfica.
Adems, debe haber un botn de consulta que al pulsarlo nos muestre un listado de todos los
empleados, de cada empleado se deber mostrar: Nombre, Apellido y el nombre del
Departamento en el que labora (usar joins en esta consulta).

El ingreso de los registros de la tabla Departamentos (por ser solamente 2) se debe hacer desde
el cdigo de MainActivity.java, no en la Interfaz Grfica.

USS - COMPUTACIN MVIL - 2016-1 23

You might also like