sábado, 22 de noviembre de 2014

Insertar/Actualizar/Eliminar registros de la base de datos en Android



En el apartado anterior del curso de programación en Android vimos cómo crear una base de datos para utilizarla desde nuestra aplicación Android. En este segundo apartado de la serie vamos a describir las posibles alternativas que proporciona la API de Android a la hora de insertar, actualizar y eliminar registros de nuestra base de datos SQLite.

El primero de ellos, que ya comentamos brevemente en el apartado anterior, es el método execSQL() de la clase SQLiteDatabase. Este método permite ejecutar cualquier sentencia SQL sobre la base de datos, siempre que ésta no devuelva resultados. Para ello, simplemente aportaremos como parámetro de entrada de este método la cadena de texto correspondiente con la sentencia SQL. Cuando creamos la base de datos en el post anterior ya vimos algún ejemplo de esto para insertar los registros de prueba. Otros ejemplos podrían ser los siguientes:


La segunda de las alternativas disponibles en la API de Android es utilizar los métodos insert(), update() y delete() proporcionados también con la clase SQLiteDatabase. Estos métodos permiten realizar las tareas de inserción, actualización y eliminación de registros de una forma algo más paramétrica que execSQL(), separando tablas, valores y condiciones en parámetros independientes de estos métodos.

Empecemos por el método insert() para insertar nuevos registros en la base de datos. Este método recibe tres parámetros, el primero de ellos será el nombre de la tabla, el tercero serán los valores del registro a insertar, y el segundo lo obviaremos por el momento ya que tan sólo se hace necesario en casos muy puntuales (por ejemplo para poder insertar registros completamente vacíos), en cualquier otro caso pasaremos con valor null este segundo parámetro.

Los valores a insertar los pasaremos como elementos de una colección de tipo ContentValues. Esta colección es de tipo diccionario, donde almacenaremos parejas de clave-valor, donde la clave será el nombre de cada campo y el valor será el dato correspondiente a insertar en dicho campo. Veamos un ejemplo:


Los métodos update() y delete() se utilizarán de forma muy parecida a ésta, con la salvedad de que recibirán un parámetro adicional con la condición WHERE de la sentencia SQL. Por ejemplo, para actualizar el nombre del usuario con código ‘6’ haríamos lo siguiente:


Como podemos ver, como tercer parámetro del método update() pasamos directamente la condición del UPDATE tal como lo haríamos en la cláusula WHERE en una sentencia SQL normal.

El método delete() se utilizaría de forma análoga. Por ejemplo para eliminar el registro del usuario con código ‘6‘ haríamos lo siguiente:


Como vemos, volvemos a pasar como primer parámetro el nombre de la tabla y en segundo lugar la condición WHERE. Por supuesto, si no necesitáramos ninguna condición, podríamos dejar como null en este parámetro (lo que eliminaría todos los registros de la tabla).

Un último detalle sobre estos métodos. Tanto en el caso de execSQL() como en los casos de update() o delete() podemos utilizar argumentos dentro de las condiciones de la sentencia SQL. Éstos no son más que partes variables de la sentencia SQL que aportaremos en un array de valores aparte, lo que nos evitará pasar por la situación típica en la que tenemos que construir una sentencia SQL concatenando cadenas de texto y variables para formar el comando SQL final. Estos argumentos SQL se indicarán con el símbolo ‘?’, y los valores de dichos argumentos deben pasarse en el array en el mismo orden que aparecen en la sentencia SQL. Así, por ejemplo, podemos escribir instrucciones como la siguiente:


Esta forma de pasar a la sentencia SQL determinados datos variables puede ayudarnos además a escribir código más limpio y evitar posibles errores.

Para este apartado he continuado con la aplicación de ejemplo del apartado anterior, a la que he añadido dos cuadros de texto para poder introducir el código y nombre de un usuario y tres botones para insertar, actualizar o eliminar dicha información.


En el siguiente apartado veremos cómo consultar la base de datos para recuperar registros según un determinado criterio.


Saludos compañeros, aprovechen la información.









No hay comentarios:

Publicar un comentario en la entrada