Para el entendimiento de este procedimiento en android vamos a crear una pequeña y sencilla app que será como una pequeña agenda, la cual va a estar conectada con una Base de Datos en SQLite y almacenará los siguientes datos:
id: INTEGER
Nombre: Text
Apellido: Text
Telefono: Text // También puede ser de tipo INTEGER
E-Mail: Text
El objetivo de esta app será conectarse a la Base de Datos creada en SQLite y realizar las siguientes operaciones con los datos:
1.- Insertar Datos
2.- Consulta y Muestra de Datos
3.- Eliminar Uno o Todos los Datos
Para no hacer tan largo el post por el momento sólo vamos a conectar con la base de datos e insertar los datos.
En el primer ActivityMain creamos los botones para realizar la operaciones en otros Activities de la sigueinte manera:
Después creamos el Activity para Insertar los Datos, para crear otro activity en Android Studio nos vamos al archivo AndroidManifest.xml, damos click derecho y en new- acitivity. En la siguiente ventana Blank, después siguiente, damos nombre y finalizar.
Ya esta creado el segundo activity, el cual debe tener 4 text large, 4 editText y 2 botones de la siguiente manera:
Ahora hacemos la función para pasar al segundo activity, es decir pasar del Principal al segundo Activity, nos vamos al MainActivity.java que es el que hace referencia al activity_main.xml:
public void pasaSegundo(View view) {
Intent i = new Intent(this, MainActivity2.class ); //MainActivity2 es el nombre del .java
//Del segundo Activity
startActivity(i);
}
código completo:
package com.bd.bdapp.app;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void pasaSegundo(View view) {
Intent i = new Intent(this, MainActivity2.class );
startActivity(i);
}
}
Para Asociarla al botón nos vamos al xml y en la vista diseño seleccionamos el botón y del lado derecho salen las propiedades y buscamos donde dice onClick y ponemos el nombre del método que hicimos en este caso debe ser pasaSegundo y damos enter.
Ahora vamos a programar la clase que va a crear la BD, que va a gestionar la versiones de la BD y nos dará acceso a ésta. Para esto en android se hace uso de la clase SQLiteOpenHelper, por lo cual crearemos una clase que va a heredar de SQLiteOpenHelper. Al hacer esto automáticamente nos generará el constructor y los siguientes métodos: onCreate(SQLiteDatabase db) que sirve para crear la tablas una vez que crea la BD y otro es onUpgrade(SQLiteDatabase db, int i, int i2) que nos ayudará a gestionar la versiones de la BD. Queda de la siguiente forma:
package com.bd.bdapp.app;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by root on 19/04/14.
*/
public class BD extends SQLiteOpenHelper {
//Query para crear las tablas en la bd
String query="CREATE TABLE personas (id INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT, Apellido TEXT, Telefono TEXT, Email TEXT)";
//Constructor de la clase
public BD(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//Ejecuta query para crear la tabla
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i2) {
db.execSQL("DROP TABLE IF EXISTS personas");
//Se crea la nueva versión de la tabla
db.execSQL(query);
}
}
Ahora crearemos otra clase para acceder a la base de datos y manejar los datos de ésta, vamos a empezar con el método de para inserta, le vamos a llamar ConexionBD:
package com.bd.bdapp.app;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.List;
/**
* Created by root on 19/04/14.
*/
public class ConexionBD {
private SQLiteDatabase db;
private Context nContext;
private BD objBD;
//Constructor de la Clase
//Recibe como parámetro una variable de Tipo contexto
// Esto debido a que Para acceder o crear la BD lo pide la Clase SQLiteOpenHelper
public ConexionBD(Context c){
nContext=c;
}
public void abrirConexion(){
objBD =new BD(nContext,"BDAgenda",null,1 );
db=objBD.getWritableDatabase();
}
public void cerrarConexion(){
db.close();
}
public boolean insertar(String nombre, String apellido,String telefono,String email){
boolean resultado=false;
try{
String query="INSERT INTO personas(Nombre, Apellido, Telefono, Email) VALUES('"+nombre+"','"+apellido+"','"+
telefono+"','"+email+"')";
db.execSQL(query);
resultado=true;
return resultado;
}
catch (Exception e){
resultado=false;
return resultado;
}
}
}
Ahora vamos al .java del Segundo activity, en nuestro caso es MainActivity2.java y hacemos los eventos de los botones:
primero el del botón limpiar
//declaramos los editText y en el Oncreate se inicializan
private EditText nombre,apellido,telefono,email;
//método para limpiar los editText
public void limpiar(View view){
nombre.setText("");
apellido.setText("");
telefono.setText("");
email.setText("");
}
Después creamos el método para insertar
public void agregar(View view){
//Declaramos variables
String nombre,apellido,telefono,email;
//Obtenemos Texto de los TextEdit
nombre=this.nombre.getText().toString();
apellido=this.apellido.getText().toString();
telefono=this.telefono.getText().toString();
email=this.email.getText().toString();
Creamos el Objeto para acceder a la BD
ConexionBD ObjCnx = new ConexionBD(this);
ObjCnx.abrirConexion(); //Abrimos Conexión
//Ejecuta el método para Insertar Datos
if(ObjCnx.insertar(nombre,apellido,telefono,email)==true){
String texto ="Elemento Agregado Corectamente";
Toast toast = Toast.makeText(this, texto, Toast.LENGTH_LONG);
toast.show();
}
else{
String texto ="Error al Agregar Elemento";
Toast toast = Toast.makeText(this, texto, Toast.LENGTH_LONG);
toast.show();
}
Cerramos Conexión
ObjCnx.cerrarConexion();
}
Código comlpeto del ActivityMain2.java:
package com.bd.bdapp.app;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class MainActivity2 extends ActionBarActivity {
private EditText nombre,apellido,telefono,email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
nombre=(EditText)findViewById(R.id.editText);
apellido=(EditText)findViewById(R.id.editText2);
telefono=(EditText)findViewById(R.id.editText3);
email=(EditText)findViewById(R.id.editText4);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_activity2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void limpiar(View view){
nombre.setText("");
apellido.setText("");
telefono.setText("");
email.setText("");
}
public void agregar(View view){
String nombre,apellido,telefono,email;
nombre=this.nombre.getText().toString();
apellido=this.apellido.getText().toString();
telefono=this.telefono.getText().toString();
email=this.email.getText().toString();
ConexionBD ObjCnx = new ConexionBD(this);
ObjCnx.abrirConexion();
if(ObjCnx.insertar(nombre,apellido,telefono,email)==true){
String texto ="Elemento Agregado Corectamente";
Toast toast = Toast.makeText(this, texto, Toast.LENGTH_LONG);
toast.show();
}
else{
String texto ="Error al Agregar Elemento";
Toast toast = Toast.makeText(this, texto, Toast.LENGTH_LONG);
toast.show();
}
ObjCnx.cerrarConexion();
}
}
Ya sólo nos resta asociar los métodos con cada botón.
Capturas de la APP