Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Introducción a SQLite

Introducción a SQLite

Autor jc mouse martes, agosto 6, 2013

sqlite

Android hace uso de la base de datos SQLite para el manejo de registros en las aplicaciones. Según Santa Wikipedia define SQLite como:

«SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña biblioteca escrita en C. «

«SQLite usa un sistema de tipos inusual. En lugar de asignar un tipo a una columna como en la mayor parte de los sistemas de bases de datos SQL, los tipos se asignan a los valores individuales. Por ejemplo, se puede insertar un string en una columna de tipo entero (a pesar de que SQLite tratará en primera instancia de convertir la cadena en un entero). «

Para hacer uso de una base de datos SQLite, android dispone de la clase SQLiteOpenHelper  que tiene los métodos para la creación de base de datos y el control de versiones. Veremos como hacer uso de esa clase en un sencillo proyecto a continuación.

Utilizaremos Eclipse Indigo con Android instalado y configurado.

Proyecto de manejo a base de datos SQLite.

1.Crea un nuevo Application Android Project con la siguiente configuración:

Application Name: SQLite Example

Project Name: SQLiteExample

Package Name: com.tutorial.sqliteexample

Activity: Blank Activity

Activity Name: MainActivity.java

Layout Name: activity_main.xml

2. Crearemos dos clases en el paquete com.tutorial.sqliteexample, estas se llamaran, «SQLiteHelper.java» y «SQLite.java»

sqlite class

3. La clase SQLiteHelper, se extiende de SQLiteOpenHelper y se sobreescriben los métodos onCreate() y onUpgrade().

El método oncreate() sirve para crear la base de datos, android verifica si la aplicación no tiene base de datos, entonces ejecuta este método.

El método onUpgrade(), es utilizada para el manejo y control de versiones, cuando se distribuye una nueva versión de un programa y se desea modificar la base de datos, ya sea con más o menos tablas y campos, quiere decir que  se desea pasar a una «nueva versión» de base de datos, esto se maneja internamente con una variable de tipo entero «versión» y es aquí donde el método onUpgrade() se ejecuta y verifica si una nueva versión de nuestra aplicación hace uso de una nueva «versión» de base de datos o de lo contrario sigue usando la misma.

Clase SQLiteHelper

package com.tutorial.sqliteexample;

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

public class SQLiteHelper extends SQLiteOpenHelper {

 //nombre de la base de datos
 private static final String __database__ = "dbTest";
 //versión de la base de datos
 private static final int __version__ = 1;
 //Instrucción SQL para crear las tablas
 private String sql = "CREATE TABLE mi_tabla ( id INTEGER, nombre TEXT, apellido TEXT )";

 /**
 * Constructor de clase
 * */
 public SQLiteHelper(Context context) {  
  super( context, __database__, null, __version__ );  
 }

 @Override
 public void onCreate(SQLiteDatabase db) {  
   db.execSQL( sql );
   Log.i("SQLite", "Se crea la base de datos " + __database__ + " version " + __version__ );
 }

 @Override
 public void onUpgrade( SQLiteDatabase db,  int oldVersion, int newVersion ) {
  Log.i("SQLite", "Control de versiones: Old Version=" + oldVersion + " New Version= " + newVersion  );
  if ( newVersion > oldVersion )
  {
   //elimina tabla
   db.execSQL( "DROP TABLE IF EXISTS mi_tabla" );
   //y luego creamos la nueva tabla
   db.execSQL( sql );   
   Log.i("SQLite", "Se actualiza versión de la base de datos, New version= " + newVersion  );
  }
 }

}

Nuestra base de datos se llama dbTest y consta de una sola tabla con dos campos, es más que suficiente para lo que deseamos hacer en esta oportunidad.

Vemos que se hace uso de una variable «__version__» de tipo entero, esta indica la versión de nuestra base de datos, más adelante veremos como pasar a una segunda versión modificando esta variable.

Nuestro método onUpgrade(), cuando android detecte que existe una nueva versión de base de datos, eliminará la tabla antigua y creara una nueva, esto claro es un ejemplo simple, en la práctica, dependiendo del tamaño de la base de datos y de los cambios que deseemos hacer este método será mucho más trabajado.

4. Una vez que tenemos nuestra clase SQLiteHepler, debemos crear otra clase más que haga uso de la anterior, esta clase es SQLite.java

SQLite.java

package com.tutorial.sqliteexample;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class SQLite {

 SQLiteHelper sqliteHelper;
 SQLiteDatabase db;

 /** Constructor de clase */
 public SQLite(Context context)
 {
  sqliteHelper = new SQLiteHelper( context );
 }

 /** Abre conexion a base de datos */
 public void abrir(){
  Log.i("SQLite", "Se abre conexion a la base de datos " + sqliteHelper.getDatabaseName() );
  db = sqliteHelper.getReadableDatabase(); // solo lectura 
 }

 /** Cierra conexion a la base de datos */
 public void cerrar()
 {
  Log.i("SQLite", "Se cierra conexion a la base de datos " + sqliteHelper.getDatabaseName() );
  sqliteHelper.close();  
 }
}

La clase SQLite.java cuenta con 2 métodos para abrir y cerrar conexiones a la base de datos, por el momento es todo lo que necesitamos. A medida que vayamos necesitando mas funcionalidad en la aplicación ya sea para insertar, eliminar o actualizar registros, estos deberán ser colocados en esta clase.

Tanto en la clase SQLiteHelper y SQLite, hacemos uso de Log.i(), estos logs nos permiten mostrar información, errores, warnings, etc en el LogCat de Eclipse y así poder depurar nuestra aplicación. en este caso Log.i nos permite mostrar información.

5. Para terminar abrimos nuestra clase MainActivity.java e implementamos la clase SQLite.java de la siguiente manera.

package com.tutorial.sqliteexample;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

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

  //
  Log.i("SQLite", "Inicio de aplicación SQLite" );
  SQLite sqlite = new SQLite( this );  
  sqlite.abrir();
  sqlite.cerrar();  
  Log.i("SQLite", "Aplicación SQLite creada correctamente 🙂 " );
  //
 }

 @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;
 }

}

En esta proyecto, no hacemos uso de interfaces XML porque  nuestra aplicación lo único que hará es crear la base de datos, conectarse y desconectarse, en la interfaz del teléfono no veremos nada. Nuestros ojos deberán estar atentos al LogCat.

Ejecutamos por PRIMERA vez y tenemos:

logcat android

Como es la primera vez que ejecutamos nuestra aplicación, la base de datos NO EXISTE, por tanto se ejecuta el método onCreate() para crear la base de datos.

Ejecutamos por SEGUNDA VEZ, pero antes, debemos cambiar a «2» la variable __version__ de la clase SQLiteHelper.

private static final int __version__ = 2;

En el LogCat tendremos:

logcat eclipse

Observamos como esta vez, la base de datos ya existe, por tanto no ejecuta el método onCreate(), pero como modificamos la versión de la base de datos a 2, se ejecuta el método onUpgrade(), actualiza a la nueva versión y cierra la conexión.

Eso es todo para comenzar con base de datos de android, más adelante iremos implementados los diferentes métodos de gestión como ser INSERT, DELETE, UPDATE Y SELECT.

Proyecto utilizado en este tutorial AQUI

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

DOM4J: Creación de archivos XML

DOM4J: Creación de archivos XML

DOM4J es una de las librerías para java más populares para el trabajo con XML ya que nos permite crea, editar y leer doc...

Introducción a Scene Builder y MVC (Parte I)

Introducción a Scene Builder y MVC (Parte I)

En este tutorial realizaremos una introducción al diseño de interfaces gráficas en JavaFX y Scene Builder, así también v...

Crear componente Switch de Android para Java Swing

Crear componente Switch de Android para Java Swing

En este post crearemos un componente que solo hay en android y que no esta disponible en la paleta de controles de Netbe...

Simulador de Urna Electrónica en java

Simulador de Urna Electrónica en java

Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr...

Personalización de Componentes Swing Java I

Personalización de Componentes Swing Java I

Hace tiempo pidieron un video tutorial sobre como crear sus propios componentes swing java, lamentablemente debo decir q...

SQLite INSERT, UPDATE, DELETE, QUERY

SQLite INSERT, UPDATE, DELETE, QUERY

En este segundo post sobre Android y SQLite, veremos el uso de los métodos de gestión de base de datos más utilizados, e...

1 comentario en “Introducción a SQLite”

  1. adria dice:

    buena introduccion, pero a todo esto deverias correr a aprender usar los ContentProviders son los que gestionan de forma perfecta la base de datos y va mejor de lo que puedes imaginar.

    a todo esto sigo todos tus post sobre java!! 🙂

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Una clase JTree permite mostrar datos de una forma jerárquica y en realidad este objeto no contiene sus datos; es decir,...

Los archivos digitales (txt, docx, xlsx, odt, odp, pdf, etc) nos permiten almacenar información el cual en ocasiones, de...

En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario.  Sin mas que...

Muchas veces necesitamos de fotos para adornar nuestros perfiles en RRSS pero no queremos subir nuestras propias fotos p...

Herramientas

Generador de Enlaces a Whatsapp