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

17
MC. Roberto Domínguez Estrada [email protected]

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

Page 1: 3-4 - Programación Básica - Android

MC. Roberto Domínguez Estrada [email protected]

Page 2: 3-4 - Programación Básica - Android

Android

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

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

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

Estructura de Paquetes Sugerida

Page 5: 3-4 - Programación Básica - Android

Tabla de “Contactos” _id nombre email

1 María González [email protected]

2 Pedro López [email protected]

3 Juan García [email protected]

Page 6: 3-4 - Programación Básica - Android

SQLite – Tipo de Datos SQLite JAVA

TEXT String

INTEGER long

REAL double

*La llave primaria siempre debe llamarse “_id” por convenciones de

Android

Page 7: 3-4 - Programación Básica - 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";

}

Page 8: 3-4 - Programación Básica - Android

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)

Page 9: 3-4 - Programación Básica - Android

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();

}

}

Page 10: 3-4 - Programación Básica - Android

AuxiliarBD

@Override

public void onUpgrade(SQLiteDatabase bd, int versionAnterior,

int versionNueva) {

bd.execSQL("DROP TABLE IF EXISTS " +

Constantes.TABLA_CONTACTOS);

onCreate(bd);

}

}

Page 11: 3-4 - Programación Básica - Android

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);

}

Page 12: 3-4 - Programación Básica - Android

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

Page 13: 3-4 - Programación Básica - Android

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);

}

Page 14: 3-4 - Programación Básica - Android

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;

}

}

Page 15: 3-4 - Programación Básica - Android

Ejemplo de Uso

…Dentro de un Activity (contexto)…

. . .

ContactosDAO contactosDAO = new ContactosDAOImpl(this);

contactosDAO.abrir();

long idContacto = contactosDAO.insertarContacto(“Juan

Garcia”, “[email protected]”);

contactosDAO.cerrar();

. . .

Page 16: 3-4 - Programación Básica - Android

Implemente una Agenda de Contactos

Page 17: 3-4 - Programación Básica - Android

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