Sei sulla pagina 1di 17

MC.

Roberto Domnguez Estrada


roberto.dominguez@itesm.mx

Android

Persistencia con SQLite


http://www.sqlite.org/docs.html

Estructura de Paquetes Sugerida

Tabla de Contactos
_id 1 2 nombre Mara Gonzlez Pedro Lpez email maria@aol.com plopez@gmail.com

Juan Garca

juan.garcia@hotmail.com

SQLite Tipo de Datos


SQLite TEXT INTEGER JAVA String long

REAL

double

*La llave primaria siempre debe llamarse _id por convenciones de Android

Constantes
public class Constantes { public static final String COL_ID = _id"; public static final String COL_NOMBRE = "nombre"; public static final String COL_EMAIL = "email"; public static final int VERSION_BD = 1; public static final String NOMBRE_BD = "Agenda"; public static final String SQL_CREAR_TABLA_CONTACTOS = "create table contactos (_id integer primary key autoincrement, nombre text not null, email text not null);"; public static final String TABLA_CONTACTOS = "contactos";
public static final String LOG_BD = "ContactosDAOImpl"; }

SQLiteOpenHelper
Clase auxiliar que permite la creacin de Bases de Datos y el control de su versin
Mtodos a sobre-escribir: onCreate(SQLiteDatabase bd)
onUpgrade(SQLiteDatabase bd, int

versionAnterior, int versionNueva)


onOpen(SQLiteDatabase bd)

AuxiliarBD
public class AuxiliarBD extends SQLiteOpenHelper { public AuxiliarBD(Context contexto) { super(contexto, Constantes.NOMBRE_BD, null, Constantes.VERSION_BD); } @Override public void onCreate(SQLiteDatabase bd) { try {

bd.execSQL(Constantes.SQL_CREAR_TABLA_CONTACTOS); } catch (SQLException e) { e.printStackTrace(); } }

AuxiliarBD
@Override
public void onUpgrade(SQLiteDatabase bd, int versionAnterior, int versionNueva) { bd.execSQL("DROP TABLE IF EXISTS " + Constantes.TABLA_CONTACTOS); onCreate(bd); }

ContactosDAO
public interface ContactosDAO {

public ContactosDAO abrir() throws SQLException; public void cerrar(); public long insertarContacto(String nombre, String email); public boolean borrarContacto(long id); public Cursor obtenerContactos(); public Cursor obtenerContacto(long id) throws SQLException; public boolean actualizarContacto(long id, String nombre, String email);
}

ContactosDAOImpl
public class ContactosDAOImpl implements ContactosDAO { private final Context contexto; private AuxiliarBD auxBD; private SQLiteDatabase bd; public ContactosDAOImpl(Context ctx) { this.contexto = ctx; auxBD = new AuxiliarBD(contexto); } public ContactosDAO abrir() throws SQLException { bd = auxBD.getWritableDatabase(); return this; Crear/Abre una BD } public void cerrar() { auxBD.close(); }

para lectura/escritura

ContactosDAOImpl
public long insertarContacto(String nombre, String email) { ContentValues valoresIniciales = new ContentValues(); valoresIniciales.put(Constantes.COL_NOMBRE, nombre); valoresIniciales.put(Constantes.COL_EMAIL, email); return bd.insert(Constantes.TABLA_CONTACTOS, null, valoresIniciales); } public boolean borrarContacto(long id) { return bd.delete(Constantes.TABLA_CONTACTOS, Constantes.COL_ID + "=" + id, null) > 0;

}
public Cursor obtenerContactos() { return bd.query(Constantes.TABLA_CONTACTOS, new String[] { Constantes.COL_ID, Constantes.COL_NOMBRE, Constantes.COL_EMAIL }, null, null, null, null, null); }

ContactosDAOImpl
public Cursor obtenerContacto(long id) throws SQLException { Cursor cursor = bd.query(true, Constantes.TABLA_CONTACTOS, new String[] { Constantes.COL_ID, Constantes.COL_NOMBRE, Constantes.COL_EMAIL }, Constantes.COL_ID + "=" + id, null, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); } return cursor; } public boolean actualizarContacto(long id, String nombre, String email) { ContentValues nuevosValores = new ContentValues(); nuevosValores.put(Constantes.COL_NOMBRE, nombre); nuevosValores.put(Constantes.COL_EMAIL, email);

return bd.update(Constantes.TABLA_CONTACTOS, nuevosValores, Constantes.COL_ID + "=" + id, null) > 0; }


}

Ejemplo de Uso
Dentro de un Activity (contexto) . . .
ContactosDAO contactosDAO = new ContactosDAOImpl(this); contactosDAO.abrir(); long idContacto = contactosDAO.insertarContacto(Juan Garcia, juan.garcia@hotmail.com); contactosDAO.cerrar();

. . .

Implemente una Agenda de Contactos

Indicaciones
Crear una Base de Datos para almacenar contactos

en Android
Permitir las operaciones:

Nuevo contacto Consultar lista de contactos Editar un contacto Borrar un contacto

Referencia Javadoc:
http://developer.android.com/reference/android/database/ sqlite/package-summary.html

Potrebbero piacerti anche