Aplication

7

Click here to load reader

Transcript of Aplication

Page 1: Aplication

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

Page 2: Aplication

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

Page 3: Aplication

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;

Page 4: Aplication

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

Page 5: Aplication

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.

Page 6: Aplication

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:

Page 7: Aplication

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

}