Tutorial CRUD Android + SQLite (I): Crear la base de datos

Posted by in Programación Android

Esta es la primera parte del Tutorial Android + SQLite en el que detallaremos paso a paso la creación de una aplicación CRUD con Android + SQLite.
 

¿Qué es un CRUD Android + SQLite?

CRUD es el acrónimo de Create, Read, Update y Delete. Por tanto vamos a crear una aplicación Android con las operaciones básicas para guardar y mantener información en una base de datos SQLite:

  • Crear Registros
  • Obtener Registros
  • Actualizar Registros
  • Borrar Registros

La aplicación de ejemplo consistirá en una lista en la que introduciremos las condiciones bancarias que nos han ofrecido en diferentes entidades para la solicitud de una hipoteca.

 

1: Nuevo Proyecto Android

No entramos en detalle para la creación de un nuevo proyecto Android. Si no tienes claro cómo hacerlo puedes revisar la entrada anterior Hola Mundo Android.
 

2: Clase controladora de base de datos para SQLite

La creación, actualización y conexión de la base de datos se realiza desde la aplicación a través de una clase que hereda de SqliteOpenHelper. Esta clase gestiona la creación de la base de datos la primera vez que se accede a la misma con el método onCreate y la actualización de la base de datos cuando se detecte un cambio de versión de la misma con el método onUpdate. Hemos llamado a la clase HipotecaDbHelper.

En esta clase declaramos 3 propiedades que utilizaremos en el constructor de la misma:

package com.sodenet.hipotecas;

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

public class HipotecaDbHelper extends SQLiteOpenHelper {

	private static int version = 1;
	private static String name = "HipotecaDb" ;
	private static CursorFactory factory = null;

	public HipotecaDbHelper(Context context)
	{
		super(context, name, factory, version);
	}

	@Override
	public void onCreate(SQLiteDatabase db)
	{

	}

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

	}
}

 

3: Crear tabla en SQLite

Ahora que ya tenemos la clase controladora de la base de datos vamos implementar el método onCreate con la creación de la tabla HIPOTECA que consta de los siguientes campos:

  • _id: Identificador del registro. Es importante utilizar como identificador _id ya que los cursores que utilizaremos para recuperar la información dan por hecho que el identificador toma este nombre.
  • hip_nombre: Nombre del registro. Lo utilizaremos para incluir el nombre de la hipoteca o entidad bancaria.
  • hip_condiciones: Condiciones bancarias de la hipoteca.
  • hip_contacto: Persona con la que estamos en contacto con la entidad bancaria
  • hip_email: E-mail de contacto.
  • hip_telefono: Teléfono de contacto.
  • hip_observaciones: Notas referentes a la hipoteca.
	@Override
	public void onCreate(SQLiteDatabase db)
	{
		Log.i(this.getClass().toString(), "Creando base de datos");

		db.execSQL( "CREATE TABLE HIPOTECA(" +
			    " _id INTEGER PRIMARY KEY," +
			    " hip_nombre TEXT NOT NULL, " +
			    " hip_condiciones TEXT, " +
			    " hip_contacto TEXT," +
			    " hip_email TEXT," +
			    " hip_telefono TEXT," +
			    " hip_observaciones TEXT)" );

		db.execSQL( "CREATE UNIQUE INDEX hip_nombre ON HIPOTECA(hip_nombre ASC)" );

		Log.i(this.getClass().toString(), "Tabla HIPOTECA creada");

		/*
		 * Insertamos datos iniciales
		 */
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(1,'Santander')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(2,'BBVA')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(3,'La Caixa')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(4,'Cajamar')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(5,'Bankia')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(6,'Banco Sabadell')");
		db.execSQL("INSERT INTO HIPOTECA(_id, hip_nombre) VALUES(7,'Banco Popular')");

		Log.i(this.getClass().toString(), "Datos iniciales HIPOTECA insertados");

		Log.i(this.getClass().toString(), "Base de datos creada");
	}

 

4: Abrir la base de datos SQLite desde la aplicación Android

Al iniciar nuestra aplicación abrimos la base de datos. La primera vez desencadena la ejecución del método onCreate de nuestra clase HipotecaDbHelper. Para ello modificamos el método onCreate de la clase de la actividad principal de la aplicación, Hipoteca.java

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

		/*
		 * Declaramos el controlador de la BBDD y accedemos en modo escritura
		 */
		HipotecaDbHelper dbHelper = new HipotecaDbHelper(getBaseContext());

		SQLiteDatabase db = dbHelper.getWritableDatabase();

		Toast.makeText(getBaseContext(), "Base de datos preparada", Toast.LENGTH_LONG).show();
	}

 

5: Ejecución de la aplicación

¡Ya está todo listo! Ahora basta con ejecutar la aplicación en el emulador teniendo en cuenta que se mostrará un mensaje emergente cuando la base de datos esté preparada.

Aplicación Hipotecas

Además si revisamos el LogCat, la primera vez que se ejecute la aplicación veremos como indica los pasos seguidos en la creación de la base de datos.

Log creación base de datos


 
Si tienes alguna pregunta o algo que aportar no lo dudes … ¡tienes los comentarios a tu disposición!