Beruflich Dokumente
Kultur Dokumente
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.
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);
• 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/