Imprimir

En esta entrada vamos a ver como usar SQLite para trabajar con bases de datos.

En nuestro proyecto, tendremos que  añadir una nueva clase de Java:

En la siguiente ventana, le ponemos el nombre que le vamos a dar, en mi caso le pondré: BaseDatosSQLite:

Abriremos el contenido del fichero y lo dejaremos como indico más abajo.

BaseDatosSQLite.java


package com.wiidam.miguel.waydamitutorial;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class BaseDatosSQLite extends SQLiteOpenHelper {

public BaseDatosSQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table cuentas(aplicacion text, usuario text, clave text)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
} //fin BaseDatosSQLite

El fichero SQLiteDataBase que hemos creado, tiene dos eventos, onCreate que se ejecutará una sola vez para la creación de nuestra base de datos y el evento onUpgrade, si quisiéramos modificar o añadir alguna tabla.

Este fichero tendremos que importarlo en los ficheros .java, en donde queramos utilizar la Base de Datos.

Ahora vamos a ver el contenido del activity_nueva_cuenta.xml y su fichero java correspondiente NuevaCuenta.java.

 

activity_nueva_cuenta.xml


 <?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:id="@+id/activity_nueva_cuenta"
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.wiidam.miguel.waydamitutorial.NuevaCuenta">

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_below="@+id/textView6"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/etAplicacion" />

<TextView
android:text="Usuario:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/etAplicacion"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/textView8" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_below="@+id/textView8"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/etUsuario" />

<TextView
android:text="Clave:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/etUsuario"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/textView9" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_below="@+id/textView9"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/etClave" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_below="@+id/etClave"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">

<Button
android:text="Guardar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/nc_btGuardar"
android:onClick="guardar"/>

<Button
android:text="LIMPIAR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/nc_btGuardar"
android:layout_toRightOf="@+id/nc_btGuardar"
android:layout_toEndOf="@+id/nc_btGuardar"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:id="@+id/nc_btLimpiar"
android:onClick="ncLimpiar"/>

<Button
android:text="VOLVER"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/nc_btLimpiar"
android:layout_toRightOf="@+id/nc_btLimpiar"
android:layout_toEndOf="@+id/nc_btLimpiar"
android:layout_marginLeft="13dp"
android:layout_marginStart="13dp"
android:id="@+id/nc_btVolver"
android:onClick="ncVolver"/>
</LinearLayout>

<TextView
android:text="Aplicación:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView6"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>

 

NuevaCuenta.java


package com.wiidam.miguel.waydamitutorial;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class NuevaCuenta extends AppCompatActivity {
private EditText etAplicacion, etUsuario, etClave;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nueva_cuenta);

//Referenciamos los objetos del layout
etAplicacion= (EditText)findViewById(R.id.etAplicacion);
etUsuario= (EditText)findViewById(R.id.etUsuario);
etClave= (EditText)findViewById(R.id.etClave);
}


public void guardar(View v) {
//Conectamos con la base de datos
BaseDatosSQLite admin = new BaseDatosSQLite(this,"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();

//Recuperamos los campos del formulario
String aplicacion = etAplicacion.getText().toString();
String usuario = etUsuario.getText().toString();
String clave = etClave.getText().toString();

//Comprobamos que se han introducido los datos
if (aplicacion.isEmpty()) {
Toast.makeText(this, "Campo APLICACIÓN vacío", Toast.LENGTH_SHORT).show();
etAplicacion.requestFocus(); //Coge el foco
} else if (usuario.isEmpty()) {
Toast.makeText(this, "Campo USUARIO vacío", Toast.LENGTH_SHORT).show();
etUsuario.requestFocus();
} else if (clave.isEmpty()) {
Toast.makeText(this, "Campo CLAVE vacío", Toast.LENGTH_SHORT).show();
etClave.requestFocus();
} else {

//Primero comprobamos que la aplicación no esté ya dada de alta
String sql = "select * from cuentas where aplicacion='" + aplicacion + "'";
Cursor fila = bd.rawQuery(sql, null);

if (fila.getCount() > 0) { //Para comprobar si la consulta a devuelto algún registro
Toast.makeText(this, "YA ESISTE LA APLICACIÓN", Toast.LENGTH_SHORT).show();
etAplicacion.requestFocus(); //devolvemos el foco al campo aplicación
fila.close();

} else { //Añadimos el registro si no existe
//Creamos un registro para guardar los datos
ContentValues registro = new ContentValues();

//Guardamos en cada campo el valor recogido en los formularios.
//"nombre_campo", variable_campo_layout
registro.put("aplicacion", aplicacion);
registro.put("usuario", usuario);
registro.put("clave", clave);

//Insertamos el registro en la base de datos, en la tabla especificada
bd.insert("cuentas", null, registro);

//Limpiamos los campos del formulario
ncLimpiar(v);

//Mostramos un mensaje de que el registro se ha guardado
Toast.makeText(this, "REGISTRO GUARDADO", Toast.LENGTH_SHORT).show();
} //Fin if


bd.close(); //Cerramos la base de datos

} //Fin else comprobaciones

} //Fin guardar

public void ncLimpiar(View v) {
//Función para limpiar los campos del layout
etAplicacion.setText("");
etUsuario.setText("");
etClave.setText("");
etAplicacion.requestFocus(); //Coge el foco
}

public void ncVolver (View v) {
finish();
}

}