Sentencias para SQLite Android. SELECT, insert, update, delete

Este tema va a ser muy importante, asique presta mucha atención, no es complicado, lo único es tener claro que queremos hacer en cada caso y que necesitamos.

 

SELECT. Sentencia SQLite para realizar CONSULTAS en Android.

Como adelante en el tema anterior, para esta tarea necesitaremos un nuevo objeto el Cursor al que pasamos una sentencia de SQL para seleccionar los datos que necesitamos (por ejemplo datos entre dos fechas concretas, un nombre concreto, un color..). Piensa que la base de datos contendrá muchos datos que no querremos ver en todos los casos, por eso tendremos que filtrar para seleccionar la parte que nos interese, así que mediante una sentencia de SQL seleccionaremos los datos que contendrá el cursor y este será el encargado de volcar los datos en variables o componentes de tipo View (TextView,EditText....) para representársela al usuario.

sqlite, select

En la captura de arriba, tienes un ejemplo completo de como cargar una consulta de una Base de Datos en un Adaptador para un ListView, vamos a explicar paso a paso cada línea:

- En las 2 primeras líneas, se crean las variables necesarias para conectarnos a nuestra base de datos, como vimos en el tema anterior, en la primera línea creamos el objeto db1 que corresponde a nuestra clase BaseDeDatos, y en la segunda creamos la variable de tipo SQLiteDatabase que hemos llamado db a la que le pasamos nuestro objeto db1.getWritableDatabase dejándola preparada para pasarle el cursor.

- En la siguiente línea, creamos la variable micursor que es de tipo Cursor, y le creamos una consulta de tipo rawQuery(consulta SQLite). Analicemos ahora la sintaxis de esta consulta:

select, example

Este tipo de sentencias tienen 4 instrucciones principales:

 SELECT. Este es el parámetro para indicar que es una consulta, le estamos indicando a SQLite que vamos a SELECCIONAR campos, después de este parámetro, le pasaremos los campos que queramos seleccionar, separándolos por comas.
 FROM. Con este parámetro, indicaremos la tabla o tablas donde se encuentran los campos que indicamos en el parámetro SELECT, como ya adelante en capítulos anteriores, podríamos tener mas de una tabla en la misma Base de Datos, tendríamos que indicar aquí, todas las tablas que vamos a consultar separándolas también por comas (como los campos).
 WHERE. Mediante este parámetro hacemos varias cosas, por un lado podemos filtrar los datos que queremos seleccionar, por ejemplo datos entre fechas, o si tenemos como campo colores, podemos seleccionar solo los de un color en concreto.. Y por otro lado usaremos esto, para el caso de consultar varias tablas tendremos que RELACIONAR ambas tablas con un campo común entre las dos, normalmente el campo _id que deberá estar en varias tablas.
Ejemplo: WHERE nombre='carlos'
Como ves en el ejemplo, he añadido un filtro para que me devuelva solo los registros cuyo nombre sea "carlos". Para las sentencias de SQLite se usa la comilla simple, esto es muy importante, si no dará error de Base de Datos.
 ORDER BY. Este parámetro sirve para ordenar el resultado por el campo que se quiera, podremos hacerlo ascendente o descendente añadiendo el parámetro DESC o añadir un segundo criterio separando por comas cada criterio.
Ejemplo: ORDER BY nombre, fecha DESC

¿que os parece? no es complicado, como todo requiere practica y hacer varias pruebas, pero vamos si yo pude.. ¡tu también!.

Otro ejemplo típico es leer la BD para representar los datos de un solo registro en una pantalla, en el siguiente ejemplo leemos registro a registro la BD, te pongo esto para que veas como sacar del cursor los datos.

select, example

insert. Insertar datos en la Base de Datos Android.

Esta tarea se realiza mediante una Sentencia de SQL, es mas sencillo que consultar, ya que no necesitamos cursor, lo haremos directamente con la síntesis siguiente:

sqlite, insert

 

Fíjate que después de conectarnos a la Base de datos con permisos de escritura con el método getWritableDatabase, creamos una variable de tipo ContentValues, y vamos añadiendo los campos con los datos con el método .put(campo, dato)

Propiedades, TextView, eclipse

 

Por ultimo usamos el método db.insert(tabla, null, datos) esta seria la síntesis, como ya he dicho antes, si ponemos el ratón sobre insert eclipse nos mostrara la ayuda en un cuadro supertuesto.

sintasis insert

 

 

update. Actualizar un registro de una Base de Datos Android

Es lo que llamamos 'editar' un campo o todos de registro que ya existe, lo típico si necesitamos por ejemplo cambiar un tlf, o actualizar una dirección.. es igual que Insertar un nuevo registro, pero con la particularidad, de tener que decirle a la sentencia, que registro vamos a editar, y esto lo hacemos indicando el numero de registro único de la base de datos _id ¿lo recuerdas? como ves es muy importante!

sqlite update

 

Como ves es exactamente igual que el anterior solo que le decimos que registro vamos a modificar. Lo único raro que puedes ver aquí es el juego de comillas y comilla simple que hay alrededor del _id ¿no?.

Bueno si pones el ratón encima del update, sale la ayuda de eclipse, y sale la condición where que el lo nuevo de esta instrucción, el where lo pide que lo pasemos como TEXTO por eso, toda la condición esta entre las comillas dobles, lo que hacemos con las comillas simples y los + con las comillas dobles es lo que llamamos concatenar textos, como le pasamos una variable de tipo Int, tenemos que "convertirlo" concatenándola la variable TEXTO con la variable Int, así que para conseguir:
_id='numero'
Tenemos que poner:
"_id=' "+variable+" '
Al poner las "+variable+" es como si solo pusieramos el numero pero como TEXTO.

sintasis update

 

 

delete. Borrar un registro de una Base de Datos Android

Esta tarea también se realiza con una sentencia de SQL, es muy parecida a la anterior, ya que le tenemos que decir que registro queremos borrar, así que le pasaremos como parámetro el _id del registro, recuerda la condición WHERE.

ejemplo delete

Como ves es simple, le decimos la tabla y el registro que queremos borrar, ya sabes, pon el ratón encima del delete y sale la ayuda.

sintasis delete

 

Bueno hasta aquí con las sentencias de SQLite. ¿que te a parecido? en principio no es complicado, lo que hay que tener claro es que quieres hacer y como hacerlo, recuerda que tienes el foro para preguntar por si te a quedado alguna duda o quieres sugerir alguna ampliación de alguna explicación.