Post on 13-Jun-2015
Universidad Tecnológica del Estado de Zacatecas Unidad Académica de Pinos
APLICACIÓN EN ANDROID
DESARROLLO DE APLICACIONES II
ELOY CONTRETAS DELIRA
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
MÓNICA DE LOS ÁNGELES RAMÍREZ MORENO
5CUATRIMESTRE “A”
21/marzo/14
El siguiente código nos muestra la parte que vamos a ejecutar va a introducir modificar y
eliminar los datos que el usuario nos proporcionara.
MainActivity.java
import android.app
public class MainActivity extends.Activity;
import android.os.Bundle;
Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DataBaseManager manager = new DataBaseManager(this);
/*ejemplos*/
manager.insertar("Jaime","11111111111");
manager.insertar2("Juan","222222222");
manager.insertar("Ana","3333333");
manager.eliminar("juan");
manager.modificarTelefono("Ana","55555555");
}
}
El siguiente código nos muestra la clase que vamos a utilizar para mandar a llamar la
clase o la base de datos que está disponible en la carpeta del mismo proyecto-
DbHelper.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "contactos.sqlite";
private static final int DB_SCHEME_VERSION = 1;
public DbHelper(Context context) {
super(context, DB_NAME, null, DB_SCHEME_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DataBaseManager.CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
El siguiente codigo nos muestra la base de datos que vamos a ocupar para guardar
modificar eliminar y consultar los datos ya introducido.
DataBaseManager.java
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DataBaseManager {
public static final String TABLE_NAME = "contactos";
public static final String CN_ID = "_id";
public static final String CN_NAME = "nombre";
public static final String CN_PHONE = "telefono";
public static final String CREATE_TABLE = "create table " +TABLE_NAME+ " ("
+ CN_ID + " integer primary key autoincrement,"
+ CN_NAME + " text not null,"
+ CN_PHONE + " text);";
private DbHelper helper;
private SQLiteDatabase db;
public DataBaseManager(Context context) {
helper = new DbHelper(context);
db = helper.getWritableDatabase();
}
private ContentValues generarContentValues(String nombre, String telefono) {
ContentValues valores = new ContentValues();
valores.put(CN_NAME, nombre);
valores.put(CN_PHONE, telefono);
return valores;
}
public void insertar(String nombre, String telefono) {
//bd.insert(TABLA, NullColumnHack, ContentValues);
db.insert(TABLE_NAME, null, generarContentValues(nombre,telefono) );
}
public void insertar2(String nombre, String telefono) {
//INSERT INTO contactos VALUES (null,'paco',9999)
db.execSQL("insert into "+TABLE_NAME+" values (null,'"+nombre+"',"+telefono+")");
}
public void eliminar(String nombre) {
//bd.delete (Tabla, Claúsula Where, Argumentos Where)
db.delete(TABLE_NAME, CN_NAME + "=?", new String[]{nombre});
}
public void eliminarMultiple(String nom1, String nom2) {
db.delete(TABLE_NAME, CN_NAME + "IN (?,?)", new String[]{nom1,nom2});
}
public void modificarTelefono(String nombre, String nuevoTelefono) {
/*bd.update(TABLA, ContentValues, Clausula Where, Argumentos Where)*/
db.update(TABLE_NAME, generarContentValues(nombre, nuevoTelefono),
CN_NAME + "=?", new String[]{nombre});
}
}
Para hacer una consulta a la base de datos y que nos devuelva valores, tenemos
dos opciones, una utilizar el métodorawQuery("Select...") donde escribiremos la consulta
en lenguaje SQL.
La segunda forma y es la que veremos aquí es con el método query que nos proporciona
android.
El método query tiene la siguiente estructura:
query (String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy)
Nota Mental: si usas SimpleCursoAdapter para mostrar datos, este adaptador requiere la
columna _id.
Continuando con el tutorial anterior añadiremos el siguiente método a la clase
DataBaseManager.java
public Cursor cargarCursorContactos() {
String[] columnas = new String[]{CN_ID, CN_NAME,CN_PHONE};
return db.query(TABLE_NAME, columnas, null, null, null, null, null);
}
Este método cargarCursoContactos() nos devuelve todos los contactos que tengamos en
la base de datos.
Esto puede suponer una operación muy costosa tanto en memoria como en la operación
de lectura si tratásemos con una gran cantidad de datos, y además puede darnos en ese
caso un ANR o Application Not Responding, donde al usuario le mostrará un mensaje con
la opción de Esperar ( a que termine de realizar la consulta) o Forzar Cierre ( y esto no lo
queremos).
Para evitar un ANR, basta con trabajar en segundo plano, pero tendrás que esperar al
siguiente tutorial para ver un ejemplo :)
Para buscar un contacto por el nombre, utilizaremos el siguiente método:
public Cursor buscarContacto(String nombre) {
String[] columnas = new String[]{CN_ID,CN_NAME,CN_PHONE};
return db.query(TABLE_NAME,columnas,CN_NAME + "=?",new
String[]{nombre},null,null,null);
}