TIC
Las
instrucciones de DML funcionan con los datos de la base de datos. Mediante
estas instrucciones puede cambiarlos o recuperar información. Las instrucciones
de DML incluyen:
La
API de SQLite de Android proporciona dos alternativas para realizar operaciones
sobre la base de datos que no devuelven resultados (entre ellas la
inserción/actualización/eliminación de registros, pero también la creación de
tablas, de índices, etc).
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.
Muy buen trabajo. Muchas gracias por su investigación. Saludos
ResponderEliminar