Cómo guardar datos en Android: Bases de datos(II)

Buenas, la semana pasada nos quedamos guardando datos en una base de datos SQLite y dejamos para ésta el cómo recuperar los datos y mostrárselos al usuario.


Empecemos. Lo primero que vamos a hacer es abrir la clase bbdd que hicimos la semana pasada y añadir un método, el cual nos va a devolver un objeto de tipo Cursor donde estarán los registros que hemos leído de la base de datos. El método tendrá el siguiente código:



public Cursor leerUsuarios(){
 SQLiteDatabase db = getReadableDatabase();
  
 return db.rawQuery("SELECT id_usuario, nombre, email "+
  " FROM "+TableUsuarios +
  " WHERE email LIKE '%@gmail.com' ", null);  
}


Como veis el método es muy sencillo. Declaramos db que manejará la base de datos y lanza una consulta que nos devuelve el cursor donde tenemos los datos. Por otro lado, la consulta es también muy sencilla, primero tenemos la instrucción SELECT seguida de los nombres de los campos que queremos, luego FROM y el nombre de la tabla de donde sacaremos los datos, y por último si queremos filtrar añadimos la clausula WHERE, en este caso le decimos que sólo nos dé los registros cuyo email sea de gmail (el % es un carácter comodín). Una vez tenemos listo el método vamos a utilizarlo en nuestra activity principal.


Lo primero de todo, en nuestro archivo main.xml definimos un TextView y le llamamos lbl, iremos añadiendo ahí los datos que hemos leído. Luego abrimos el archivo de nuestra activity HolaMundoActivity.java y creamos el siguiente método:


private void leerUsuariosBBDD(){
     TextView lbl = (TextView) findViewById(R.id.lbl);
     bbdd bd = new bbdd(this);
     Cursor cursor = bd.leerUsuarios();
     
     if(cursor.moveToFirst()){
      do{
     lbl.append(String.valueOf(cursor.getInt(0)) + " - " + cursor.getString(1) + " - " + cursor.getString(2) + "\n");  
      }while(cursor.moveToNext());
     }
     
    } 


Lo que hace este método es: primero inicializar nuestro TextView, luego, crear un objeto de nuesta clase de base de datos y llamar al método que lee los usuarios y meterlo en un Cursor.
Por último recorremos el cursor y obtenemos los datos que contiene. Lo hacemos con el método getInt, getString... en función del tipo de dato que contenga en la base de datos. Indicamos en estos el índice de nuestros campos según la SELECT que hemos hecho.
Para añadir texto al TextView utilizamos el método append, fijaros que al dato integer le he hecho una conversión a String.

El método lo podemos llamar una vez hayamos llamado al método de la semana pasada que insertaba registros. Por otro lado, podéis probar a insertar algún registro con email tipo gmail y otros que no lo sean, veréis como solo saca los de gmail.


Por último, os incluyo un método para que podáis eliminar alguno de los usuarios que habeis añadido a la base de datos, el método lo incluiremos en la clase bbdd y se utiliza de forma similar a la inserción:


public void eliminarUsuario(int idusuario){
 SQLiteDatabase db = getWritableDatabase();
 if(db!=null){
  db.execSQL("DELETE FROM " + TableUsuarios + 
    "WHERE id_usuario = " + idusuario);
  db.close();
 }
}


La consulta es muy simple, elimina los registros de la tabla de usuarios, con la clausula WHERE le decimos que solo aquellos cuyo id_usuario sea el que le pasemos. Si quitáis el WHERE eliminará TODOS los usuarios de la tabla, así que tened cuidado cuando eliminéis estad seguros de lo que estáis eliminando.

Comments are closed.