Вы находитесь на странице: 1из 29

ANDROID

Día 5
SQL  LITE
Base  de  datos
Definición
• Librería  que  nos  permite  utilizar  bases  de  datos  
mediante  el  lenguaje  SQL,  de  una  forma  sencilla  y  
utilizando  muy  pocos  recursos  del  sistema
• Es  un  motor  de  bases  de  datos  muy  popular  en  la  
actualidad  por  ofrecer  características  tan  interesantes  
como  su  pequeño  tamaño,  no  necesitar  servidor,  
precisar  poca  configuración,  ser  transaccional  y  por  
supuesto  ser  de  código  libre
SQLiteOpenHelper
• Clase  auxiliar  para  crear,  actualizar,  y  conectar  con  una  
base  de  datos  SQLite
• Clase  abstracta  que  nos  provee  los  mecanismos  
básicos  para  la  relación  entre  la  aplicación  Android  y  la  
información.
Implementación
• Crear  una  clase  que  extienda  de SQLiteOpenHelper
• Configurar  un  constructor  apropiado
• Sobrescribir  los  métodos onCreate() y onUpgrade()
1. Crea  nueva  clase  que  
extienda  
de SQLiteOpenHelper y  
Práctica llamarla  PeliculaHelper
Retomar  la  práctica 2. Implementar  lo  métodos
del  CINEMA
Parámetros del  constructor  
• Context context:  Contexto  de  acción  para  el  helper.
• String name:  Nombre  del  archivo  con  extensión .db,  donde  se  
almacenará  la  base  de  datos,  que  a  su  vez  corresponde  al  nombre  de  
la  base  de  datos.
• CursorFactory factory:  Asignamos null,  por  ahora  no  es  necesario  
comprender  el  funcionamiento  de  este  parámetro.
• int version:  Entero  que  representa  la  versión  de  la  base  de  datos.  Su  
valor  inicial  por  defecto  es 1.  Si  en  algún  momento  la  versión  es  
mayor  se  llama  al  método onUpgrade() para  actualizar  la  base  de  
datos  a  la  nueva  versión.  Si  es  menor,  se  llama  a downUpgrade() para  
volver  a  una  versión  previa
1. Crear  el  constructor  
2. Crear  sus  variables  
estáticas  de  la  versión  y  la  
Práctica BD
Retomar  la  práctica 3. Modificar  parámetros  del  
del  CINEMA constructor
Clase  Contract
• Clase  helper donde  se  colocan  las  clases  que  van  a  ser  las  
tablas  con  sus  columnas
• Es  opcional  y  facilitan  el  mantenimiento  del  esquema,  
por  si  en  algún  momento  cambian  los  nombres  de  las  
tablas  o  columnas.
• Se  crean  todas  las  clases  que  van  a  ser  tus  tablas  
1. Crear  tu  Clase  Contrato  
llamado  CinemaContract
2. Crear  su  Clase  
Práctica PeliculaEntidad que  va  ser  
Retomar  la  práctica la  tabla
del  CINEMA
Método OnCreate()
• Método  es  llamado  automáticamente  cuando  creamos  
una  instancia  de  la  clase SQLiteOpenHelper.  En  su  
interior  establecemos  la  creación  de  las  tablas  y  
registros.

Nota:  La  BD  será  almacenada  en  el  dispositivo  


/data/data/<paquete>/databases/<nombre-de-la-bd>.db
Crear  la  Tabla
• Con  el  metodo execSQL() y  el  comando CREATE  TABLE
• Este  método  ejecuta  una  sola  sentencia  SQL  que  no  
retorne  en  filas.  Por  lo  que  el  comando SELECT no  es  
posible  usarlo  dentro  de  él.
• Es  recomendable  que  la  llave  primaria  
sea BaseColumns._ID,  ya  que  el  framework de  Android  
usa  esta  referencia  internamente  en  varios  procesos.
1. Crear  la  tabla  en  el  método  
OnCreate

Práctica
Retomar  la  práctica
del  CINEMA
Métodos para  acceder  a  la  BD  fuera  del  
onCreate
• getWritableDatabase()  para  escribir  en  la  BD  
• getReadableDatabase()   para  leer  u  obtener  Datos
Insertar  Datos  en  La  Tabla
SQLiteDatabase.insert()
1. Crea  un  objeto  del  tipo ContentValues.  Este  permite  
almacenar  las  columnas  del  registro  en  pares  clave-­‐
valor
2. Añade  los  pares  con  el  método put()
3. Invoca  a insert() a  través  de  la  instancia  de  la  base  de  
datos
Parámetros de  Insert
• String table:  Nombre  de  la  tabla  donde  se  insertará  la  
info.
• String nullColumnHack:  Nombre  de  una  columna  que  
acepta  valores NULL y  de  la  cual  no  se  proveen  pares  
clave-­‐valor  en values.
• ContentValues values:  Conjunto  de  pares  clave-­‐valor  
para  las  columnas.
Recomendaciones
• Se  puede  realizar  desde  la  interfaz
• Se  puede  realizar  en  el  onCreate
• Lo  recomendable  es  crear  un  método en  el  Helper que  
reciba  el  parámetro  del  Objeto
• Si  lo  quieres  genérico  se  puede  crear  una  clase  abstracta  
e  implementar  en  cada  objeto  
1. Crear  un  método  insertar  
que  reciba  como  parámetro  
el  objeto  Pelicula
Práctica 2. Poner  la  lógica  del  negocio  
Retomar  la  práctica para  insertar  en  la  BD
del  CINEMA 3. Verificar  en  ADM  si  se  creó  
la  BD
Consulta  de  registros
•Se  utiliza  el  método query()
query (String table, //  Nombre  de  la  tabla
String[] columns, //  Lista  de  Columnas  a  consultar  (NULL=Todas)
String selection, //  Columnas  para  la  cláusula  WHERE
String[] selectionArgs, //  Valores  a  comparar  con  las  columnas  del  WHERE
String groupBy, //  Agrupar  con  GROUP  BY  
String having, //  Condición  HAVING  para  GROUP  BY  
String orderBy) //  Cláusula  ORDER  BY  
Ejemplo
String columns[] = new String[]{PeliculaEntry.NOMBRE};
String selection = PeliculaEntry.ID + " LIKE ?"; // WHERE id LIKE ?
String selectionArgs[] = new String[]{”P-001"};
Cursor c = db.query( PeliculaEntry.TABLE_NAME, columns,
selection, selectionArgs, null, null, null );
Si  se  utiliza  el  método rawQuery()
• Pasa  el  string directo  de  la  consulta,  y  el  valor  con  el  cual  es  
comparado  ,  ejemplo:
db.rawQuery("select * from " + PeliculaEntry.TABLE_NAME, null);

String query = "select * from " + PeliculaEntry.TABLE_NAME + "


WHERE _id=?";
database.rawQuery(query, new String[]{"3"});
Cursor
• Es  un  apuntador  al  conjunto  de  valores  obtenidos  de  la  
consulta.  Al  inicio  el  cursor  apunta  a  una  dirección  previa  
a  la  primera  fila
• Debes  leer  cada  tupla moviendo  el  cursor  a  la  fila  
siguiente.
1. Crear  un  método  que  traiga  
todas  las  películas  en  el  Helper
con  cualquiera  de  los  dos  
métodos
Práctica 2. En  el  Fragment llamar  a  este  
devuelve  el  Cursor
Retomar  la  práctica 3. Modificar  el  adapter del  
del  CINEMA recycler para  que  reciba  un  
Cursor
4. Modificar  el  método  
onBindViewHolder para  que  
reciba  los  valores  del  Cursor
Práctica Final
• Terminar  el  proyecto  del  cinema  para  que  se  pueda  
hacer  un  CRUD
• Colocar  Diseño
Método onUpgrate
• es  ejecutado  si  se  identificó  que  el  usuario  tiene  una  
versión  antigua  de  la  base  de  datos.
• establecerás  instrucciones  para  modificar  el  esquema  de  
la  base  de  datos,  como  por  ejemplo  eliminar  todo  el  
esquema  y  recrearlo,  agregar  una  nueva  tabla,  añadir  
una  nueva  columna,  etc.
Para  hacer  llamado  desde  nuestra  
aplicación
1. Se  crea  la  instancia  del  Helper en  la  UI  que  vas  a  utilizar  
por  ejemplo  en  el  fragment que  tiene  el  recycler
2. Se  llama  algún método  que  realiza  alguna  acción  a  la  
BD,  en  este  caso  al  insertar
Referencias
• https://androidstudiofaqs.com/tutoriales/usar-­‐sqlite-­‐en-­‐android-­‐studio
• http://www.sgoliver.net/blog/bases-­‐de-­‐datos-­‐en-­‐android-­‐i-­‐primeros-­‐pasos/
• http://www.hermosaprogramacion.com/2014/10/android-­‐sqlite-­‐bases-­‐de-­‐datos/
• http://www.androidcurso.com/index.php/recursos/42-­‐unidad-­‐9-­‐almacenamiento-­‐de-­‐datos/309-­‐
bases-­‐de-­‐datos

• http://www.hermosaprogramacion.com/2016/01/recyclerview-­‐con-­‐cursor-­‐en-­‐android/
• https://developer.android.com/training/basics/data-­‐storage/databases.html?hl=es-­‐419
• http://www.sgoliver.net/blog/bases-­‐de-­‐datos-­‐en-­‐android-­‐i-­‐primeros-­‐pasos/

Вам также может понравиться