Después de ver en el tutorial pasado una guía básica de sentencias en SQLite hoy utilizaremos dicho conocimiento viendo un ejercicio de como gestionar usuarios con SQLite en android studio, donde se tomara lo siguiente:
Agregar usuario
Buscar usuario por Dni
Eliminar usuario
Actualizar usuario
Si hacemos recuento ya hemos visto ejercicios similiares pero con otros gestores de bases de datos si te interesa puedes revizar los siguientes enlaces:
Registrar Usuario en php y mysql
Listar Usuario en php y mysql
Eliminar Usuario en php y mysql
Actualizar Usuario en php y mysql
Continuando con nuestro ejercicio el producto final se vera como en la siguiente imagen.
Bien empezamos de una ves debemos crear una interfaces como la imagen de arriba 4 ediText para insertar los datos nuevos y 4 botones para gestionar cada una de las opciones.
Nuestro actitivity_main.xml quedaría de la siguiente forma:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.androidmorefast.pc.appejersqlite01.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DNI"
android:id="@+id/txtDni"
android:layout_alignParentLeft="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editTxtDni"
android:layout_below="@+id/txtDni"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nombre y apellidos"
android:id="@+id/txtNombre"
android:layout_below="@+id/editTxtDni"
android:layout_alignParentLeft="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editTxtNombre"
android:layout_below="@+id/txtNombre"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/editTxtDni" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ciudad"
android:id="@+id/txtCiudad"
android:layout_below="@+id/editTxtNombre"
android:layout_alignParentLeft="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editTxtCiudad"
android:layout_below="@+id/txtCiudad"
android:layout_alignRight="@+id/editTxtNombre"
android:layout_alignParentLeft="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Número"
android:id="@+id/txtNumero"
android:layout_below="@+id/editTxtCiudad"
android:layout_alignParentLeft="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editTxtNumero"
android:layout_below="@+id/txtNumero"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/editTxtCiudad"
android:layout_alignParentRight="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Actualizar Datos"
android:id="@+id/btnEditar"
android:onClick="modificar"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="54dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Eliminar"
android:id="@+id/btnEliminar"
android:onClick="eliminar"
android:layout_marginRight="61dp"
android:layout_marginEnd="61dp"
android:layout_above="@+id/btnEditar"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="19dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Consulta DNI"
android:id="@+id/btnBuscar"
android:onClick="consultar"
android:layout_below="@+id/editTxtNumero"
android:layout_alignRight="@+id/btnAgregar"
android:layout_alignEnd="@+id/btnAgregar" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Agregar"
android:id="@+id/btnAgregar"
android:onClick="agregar"
android:layout_alignBaseline="@+id/btnEliminar"
android:layout_alignBottom="@+id/btnEliminar"
android:layout_alignRight="@+id/txtNombre"
android:layout_alignEnd="@+id/txtNombre" />
</RelativeLayout>
Continuando con el tutorial se aclara que se utilizara dos clases para este ejercicio
MainActivity.java
AdminSQLite.java
En el MainActivity veremos las consultas necesarias para poder gestionar el usuario y la inicialización de nuestros editText y botones:
public class MainActivity extends Activity {
private EditText eTxt1, eTxt2, eTxt3, eTxt4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// proviene del layout, son los campos de texto
eTxt1 = (EditText) findViewById(R.id.editTxtDni); eTxt2 = (EditText) findViewById(R.id.editTxtNombre);
eTxt3 = (EditText) findViewById(R.id.editTxtCiudad); eTxt4 = (EditText) findViewById(R.id.editTxtNumero);
}
// Damos de alta los usuarios en nuestra aplicación
public void agregar(View v) {
AdminSQLite admin = new AdminSQLite(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = eTxt1.getText().toString();
String nombre = eTxt2.getText().toString();
String ciudad = eTxt3.getText().toString();
String numero = eTxt4.getText().toString();
ContentValues registro = new ContentValues();
registro.put("dni", dni);
registro.put("nombre", nombre);
registro.put("ciudad", ciudad);
registro.put("numero", numero);
// los inserto en la base de datos
bd.insert("usuario", null, registro);
bd.close();
// ponemos los campos a vacío para insertar el siguiente usuario
eTxt1.setText(""); eTxt2.setText(""); eTxt3.setText(""); eTxt4.setText("");
Toast.makeText(this, "Datos del usuario cargados", Toast.LENGTH_SHORT).show();
}
// Hacemos búsqueda de usuario por DNI
public void consultar(View v) {
AdminSQLite admin = new AdminSQLite(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = eTxt1.getText().toString();
Cursor fila = bd.rawQuery(
"select nombre, ciudad, numero from usuario where dni=" + dni, null);
if (fila.moveToFirst()) {
eTxt2.setText(fila.getString(0));
eTxt3.setText(fila.getString(1));
eTxt4.setText(fila.getString(2));
} else
Toast.makeText(this, "No existe ningún usuario con ese dni",
Toast.LENGTH_SHORT).show();
bd.close();
}
/* Método para dar de baja al usuario insertado*/
public void eliminar(View v) {
AdminSQLite admin = new AdminSQLite(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = eTxt1.getText().toString();
// aquí borro la base de datos del usuario por el dni
int cant = bd.delete("usuario", "dni=" + dni, null);
bd.close();
eTxt1.setText(""); eTxt2.setText(""); eTxt3.setText(""); eTxt4.setText("");
if (cant == 1)
Toast.makeText(this, "Usuario eliminado",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "No existe usuario",
Toast.LENGTH_SHORT).show();
}
// Método para modificar la información del usuario
public void modificar(View v) {
AdminSQLite admin = new AdminSQLite(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = eTxt1.getText().toString();
String nombre = eTxt2.getText().toString();
String ciudad = eTxt3.getText().toString();
String numero = eTxt4.getText().toString();
ContentValues registro = new ContentValues();
// actualizamos con los nuevos datos, la información cambiada
registro.put("nombre", nombre);
registro.put("ciudad", ciudad);
registro.put("numero", numero);
int cant = bd.update("usuario", registro, "dni=" + dni, null);
bd.close();
if (cant == 1)
Toast.makeText(this, "Datos modificados con éxito", Toast.LENGTH_SHORT)
.show();
else
Toast.makeText(this, "No existe usuario",
Toast.LENGTH_SHORT).show();
}
/* fin del programa */
}
Ahora veremos nuestro AdminSQLite esta clase nos servirá para administrar nuestra BD donde la crearemos a ella y sus tablas:
public class AdminSQLite extends SQLiteOpenHelper {
public AdminSQLite(Context context, String nombre, SQLiteDatabase.CursorFactory factory, int version) {
super(context, nombre, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//aquí creamos la tabla de usuario (dni, nombre, ciudad, numero)
db.execSQL("create table usuario(dni integer primary key, nombre text, ciudad text, numero integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int version1, int version2) {
db.execSQL("drop table if exists usuario");
db.execSQL("create table usuario(dni integer primary key, nombre text, ciudad text, numero integer)");
}
}
Programador alfa, lomo plateado, barba de clavos, mentón de roca, no descarga la aplicación sigue el tutorial. Clic para DESCARGAR
Hola soy Alex Céspedes fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!
Buenas noches,
Acabo de probar el tutorial, pero me genera un error cuando apreto los botones de actualizar, borrar, consultar.
me arroja se ha detenido la aplicacion.
aclaro, el unico que no genera error es el ingresar
Cuando tiene problemas de ejecución, por ejemplo el programa se congela o se cierra es porque no ha actualizado bien su IDE con respecto a la API que se ha trabajado el ejercicio, por lo general los ejercicios aquí lo trabajamos en la API 19 y 23 le recomiendo que se documente al respecto.
ADRIAN SOSA Como resolviste ese problemas?