3-4 - Programación Básica - Android

Preview:

Citation preview

MC. Roberto Domínguez Estrada roberto.dominguez@itesm.mx

Android

Persistencia con SQLite http://www.sqlite.org/docs.html

Estructura de Paquetes Sugerida

Tabla de “Contactos” _id nombre email

1 María González maria@aol.com

2 Pedro López plopez@gmail.com

3 Juan García juan.garcia@hotmail.com

SQLite – Tipo de Datos SQLite JAVA

TEXT String

INTEGER 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 creación de Bases de

Datos y el control de su versión

Métodos 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;

}

public void cerrar() {

auxBD.close();

}

Crear/Abre una BD

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