Skip to content
Base de datos SQLite en Android

SQLite en App Android: actualizar, eliminar y consultar datos

Continuamos viendo la gestión de una base de datos SQLite, explicando en esta ocasión la actualización, eliminación y consulta de datos desde nuestra aplicación Android.

Recuerda que este contenido forma parte de nuestro curso de Programación de Apps con Android Studio

Actualización de datos

De nuevo, tendremos dos posibilidades para actualizar un registro ya insertado previamente en nuestra base de datos:

Usando de nuevo el método execSQL()  pero esta vez pasando como parámetro la sentencia SQL propia para la actualización de un campo.

Usando el método update()  que recibe cuatro parámetros:

  • El nombre de la tabla
  • El objeto ContentValues, que incluye los nuevos datos a modificar
  • la condición WHERE de la sentencia SQL
  • El cuarto es un caso especial que veremos a continuación en un ejemplo para que se entienda mejor.

Usando el método execSQL()  tendríamos lo siguiente:

Con el método update() tendremos dos formas de hacerlo, y aunque las dos son totalmente viables, la segunda es más recomendable por seguridad. Vamos a verlas:

En primer lugar crearíamos un ContentValues con el valor actualizado como sigue:

y a continuación, tendremos las dos alternativas posibles:

a) Poniendo el cuarto parámetro a null:

b) O bien usando el cuarto parámetro. En lugar de pasar directamente el argumento de la cláusula WHERE, le indicamos el valor ‘?’ y usamos el cuarto parámentro para indicarle estos argumentos, que en este caso sólo es uno:

Ambas formas producen el mismo resultado.

El segundo método es más recomendable por seguridad. Separar los valores de la comparación hace nuestro código menos vulnerable a posibles fallos con la sintaxis de la consulta, e incluso mas robusto ante posibles ataques, en caso de que construyamos la consulta de forma dinámica a partir de datos introducidos por el usuario manualmente.

Añadimos el código de la actualización de datos a nuestra aplicación:

Eliminación de datos

Para la eliminación de datos tendríamos de nuevo dos posibilidades:

Usar el método execSQL() , pasando como parámetro la sentencia SQL para la eliminación de datos.

Usar el método delete()  que recibirá tres parámetros:

  • nombre de la tabla
  • la cláusula WHERE
  • y el tercero, al igual que ocurría con el método update(), serían los argumentos de la cláusula WHERE,si así lo requiere, si no, tomaría el valor null.

Veamos un ejemplo usando ambos métodos, primero con execSQL():

Y ahora con update() usando el tercer parámetro:

Consulta de datos

Para consultar los datos almacenados en una base de datos, podremos usar dos métodos:

El método rawQuery() , el cual recibe dos parámetros:

  • uno será la sentencia SELECT propia de SQL
  • otro que indicará los argumentos de la cláusula WHERE si esta existiera.

El método query() , que recibe nada menos que siete parámetros.

Veámoslo por orden:

  1. Un string que será el nombre de la tabla sobre la que se realiza la consulta.
  2. Un array de strings representando las columnas que queremos recuperar. Si pasamos null a este parámetro, devolverá todas las columnas.
  3. Un string que representa la cláusula WHERE si es necesaria, si no ponemos este parámetro a null.
  4. Un array de strings representando los argumentos de la cláusula WHERE anterior, si fue null, este, parámetro también será puesto a null.
  5. Un string que representa la cláusula GROUP BY si es necesario, si no será null.
  6. Un string que representa la cláusula HAVING si es necesario, si no será null.
  7. Un string que representa la cláusula ORDER BY si es necesario, si no será null.

Ambos métodos devolverán un objeto de tipo Cursor que contendrá los datos de la consulta.

Veamos un ejemplo usando ambos métodos, empezando por rawQuery():

Y para el caso del método query():

Ambos cursores tendrán los mismos datos, que serán todos los de la tabla comments devolviendo los campos user y comment.

Veamos ahora cómo podemos acceder a los datos a través del cursor devuelto.

Para iterar sobre las filas devueltas por un cursor usaremos principalmente dos métodos:

moveToFirst()  para posicionarnos al principio del cursor

moveToNext() para movernos a la siguiente fila.

Para obtener los valores de cada fila, usaremos los métodos getString() , getInt() , getFloat() , etc., todas ellas recibiendo como único parámetro un entero que identifica la posición de la columna que queramos obtener.

En nuestro caso, cada fila de la base de datos estaba compuesta por tres columnas:

  • columna 0:  _id
  • columna 1: user
  • columna 2: comment

Si no sabemos con exactitud que posición ocupa la columna deseada, podemos recurrir al método getColumnIndex() , que recibe como parámetro una cadena de texto con el nombre de la columna de la cual queramos obtener el dato y devolviendo la posición que ocupa en la fila, y así asegurarnos que estamos obteniendo el valor deseado.

Un detalle importante a tener en cuenta es que una vez finalicemos de manejar el cursor, es conveniente llamar al método close()  para cerrarlo y así liberar todos sus recursos no pudiendo hacer uso de él más.

Veamos un ejemplo teniendo en cuenta nuestro cursor creado anteriormente:

Añadimos este código a nuestra aplicación quedando de la siguiente forma:

En los próximos tutoriales describiremos un proyecto ejemplo, mostrando la implementación de una base de datos SQLite en una App Android básica.

 

Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies. También se ha incluido en pruebas un Agente AI que incluye sus propias cookies   
Privacidad