aplicación móvil con acceso a datos

11
UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN Materia DESARROLLO DE APLICACIONES III Tema “Aplicación Android con Acceso a Base de Datos” Nombre Completo: Azucena Pérez Gallegos Grado: 5 Grupo: “B” Nombre del Docente : Eloy Contreras de Lira Fecha de entrega : 24/03/2014

Upload: susi-perez-gallegos

Post on 06-May-2015

191 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

Materia

DESARROLLO DE APLICACIONES III

Tema

“Aplicación Android con Acceso a Base de Datos”

Nombre Completo: Azucena Pérez Gallegos

Grado: 5 Grupo: “B” Nombre del Docente : Eloy Contreras de Lira Fecha de entrega : 24/03/2014

Page 2: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

AgendaAndroid

1. Creación base de datos SQLite

Para poder crear bases de datos en nuestra aplicación debemos usar las clases hijas de "SQLiteOpenHelper". Que nos pide crear un constructor y sobreescribir dos métodos: "onCreate(SQLiteDatabase db)"

"onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)"

El primero se encargara de crear las tablas si no existen y el segundo las

actualizara si nos es necesario.

Todas las clases que se utilizarán deberán estar dentro de un proyecto el que

llevara por nombre: proyectagenda.

Clase DataBaseHelper: Dentro de esta clase se encuentra el código de la creación

de nuestra BD.

package proyectagenda.com; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME="Agenda01"; public static final String NOMBRE="nombre"; public static final String TELEFONO="telefono"; public static final String EMAIL="email"; public static final String DIRECCION="direccion"; public DataBaseHelper(Context context) { super(context,DATABASE_NAME,null,1); } /** Called when the activity is first created. */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE AgendaContactos(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, telefono TEXT, email TEXT,direccion TEXT);"); }

Page 3: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { android.util.Log.v("Constante", "Actualiza la base de datos y destruye la base de datos antigua con el mismo nombre"); db.execSQL("DROP table if exists AgendaContactos"); onCreate(db); } }

2. Gestionar base de datos

Para gestionar la base de datos vamos a crear unos métodos personalizados para insertar, modificar, eliminar y consultar registros de nuestra tabla. 2.1Insertar registros Para insertar registros en nuestra BD. Crearemos la clase Nuevo package proyectagenda.com; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class Nuevo extends Activity{ public EditText nombre,telefono,email,direccion; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.agregarususario); nombre=(EditText)findViewById(R.id.nombre); telefono=(EditText)findViewById(R.id.telefono); direccion=(EditText)findViewById(R.id.direccion); email=(EditText)findViewById(R.id.email);

Page 4: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

} private void insert(String nombre, String telefono, String email, String direccion) { DataBaseHelper dbh=new DataBaseHelper(this); SQLiteDatabase db= dbh.getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put(DataBaseHelper.NOMBRE, nombre); cv.put(DataBaseHelper.TELEFONO, telefono); cv.put(DataBaseHelper.EMAIL, email); cv.put(DataBaseHelper.DIRECCION, direccion); db.insert("AgendaContactos",DataBaseHelper.NOMBRE,cv); db.close(); } public void agregar(View b) { insert(nombre.getText().toString(),telefono.getText().toString(),email.getText().toString(),direccion.getText().toString()); Toast.makeText(getApplicationContext(), "Contacto agregado correctamente", Toast.LENGTH_LONG).show(); nombre.setText(""); email.setText(""); direccion.setText(""); telefono.setText(""); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater=getMenuInflater(); inflater.inflate(R.layout.menu1, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent i; switch (item.getItemId()) { case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class); startActivity(intent); break; } return true; } }

Page 5: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

2.2 Modificar registros

Para modificar un registro desde nuestra base de datos crearemos la clase

ModificarContacto con el siguiente código:

package proyectagenda.com; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class Modificar1 extends Activity{ public EditText nombre; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.modificarcontacto); nombre=(EditText)findViewById(R.id.nombre); } public void modificar(View b) { DataBaseHelper dbh=new DataBaseHelper(this);

Page 6: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

2.3 Borrar registros

Para borrar registros usaremos el método "delete(table, whereClause, whereArgs)"

que nos pide el nombre de la tabla "table", el registro a borrar "whereClause" que

tomaremos como referencia su id y como último parámetro "whereArgs" los

valores a borrar.

Llamaros a nuestra clase EliminarContacto con el código siguiente:

package proyectagenda.com; import android.app.Activity; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class EliminarContacto extends Activity{ EditText nombre; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.eliminarcontacto); nombre=(EditText)findViewById(R.id.nombre); } public void eliminar(View b) { DataBaseHelper dbh=new DataBaseHelper(this); SQLiteDatabase db= dbh.getWritableDatabase(); String[] args = new String[]{nombre.getText().toString()}; db.execSQL("DELETE FROM AgendaContactos WHERE nombre=?", args); Toast.makeText(getApplicationContext(), "Contacto eliminado con exito.!", Toast.LENGTH_LONG).show();

Page 7: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

db.close(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater=getMenuInflater(); inflater.inflate(R.layout.menu1, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent i; switch (item.getItemId()) { case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class); startActivity(intent); break; } return true; } }

2.4 Consultar registros

Si se desea consultar un registro desde nuestra tabla crearemos la clase Buscar

utilizando el siguiente código:

package proyectagenda.com; import proyectagenda.com.R; import proyectagenda.com.buscar; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View;

Page 8: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

import android.widget.EditText; import android.widget.Toast; public class buscar extends Activity{ public EditText nombre; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.buscarcontacto); nombre=(EditText)findViewById(R.id.nombre); } public void buscar(View b) { DataBaseHelper dbh=new DataBaseHelper(this); SQLiteDatabase db= dbh.getWritableDatabase(); String[] campos = new String[] {"nombre"}; String[] args = new String[] {nombre.getText().toString()}; Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null); if (c.moveToFirst()) { Intent it=new Intent(this,Detalle.class); it.putExtra("nombre", nombre.getText().toString()); startActivity(it); } else { Toast.makeText(getApplicationContext(), "El contacto especificado no existe.!", Toast.LENGTH_LONG).show(); db.close(); } } public String recuperanum() { String numero=""; DataBaseHelper dbh=new DataBaseHelper(this); SQLiteDatabase db= dbh.getWritableDatabase(); String[] campos = new String[] {"telefono"}; String[] args = new String[] {nombre.getText().toString()}; Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null);

Page 9: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

if (c.moveToFirst()) { do { String telefono = c.getString(0); numero=telefono; } while(c.moveToNext()); } else { Toast.makeText(getApplicationContext(), "Ha ocurrido un error :(", Toast.LENGTH_LONG).show(); db.close(); } return numero; } public void llamar(View b) { DataBaseHelper dbh=new DataBaseHelper(this); SQLiteDatabase db= dbh.getWritableDatabase(); String[] campos = new String[] {"nombre"}; String[] args = new String[] {nombre.getText().toString()}; Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null); if (c.moveToFirst()) { AlertDialog.Builder alertDialog = new AlertDialog.Builder(buscar.this); alertDialog.setMessage("¿Desea realizar la llamada al contacto?"); alertDialog.setTitle("Llamar a contacto..."); alertDialog.setIcon(android.R.drawable.ic_dialog_alert); alertDialog.setCancelable(false); alertDialog.setPositiveButton("SI", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { try { String numero=recuperanum(); String number = "tel:" + numero.trim(); Toast.makeText(getApplicationContext(), "Llamando al " + numero.trim(), Toast.LENGTH_LONG).show(); Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number)); startActivity(callIntent); }

Page 10: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

catch (Exception e) { Toast.makeText(getApplicationContext(), "No se ha podido realizar la llamada", Toast.LENGTH_LONG).show(); } } }); alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "Llamada cancelada", Toast.LENGTH_LONG).show(); } }); alertDialog.show(); } else { Toast.makeText(getApplicationContext(), "El contacto especificado no existe.!", Toast.LENGTH_LONG).show(); db.close(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater=getMenuInflater(); inflater.inflate(R.layout.menu1, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent i; switch (item.getItemId()) { case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class); startActivity(intent); break; } return true; } }

Page 11: Aplicación móvil con acceso a datos

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

3. Uso de nuestra base de datos en una Activity

package proyectagenda.com; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class AgendaAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.bienvenida); } public void agregar(View b) { Intent it=new Intent(this,Nuevo.class); startActivity(it); } public void eliminar(View b) { Intent it=new Intent(this,EliminarContacto.class); startActivity(it); } public void modificar(View b) { Intent it=new Intent(this,Modificar1.class); startActivity(it); } public void buscar(View b) { Intent it=new Intent(this,buscar.class); startActivity(it); } }