Bases de Datos Android - Acceso a la base de datos SQLite de Android

Acceso a la Base de Datos.

Ya estamos aquí otra vez! en la lección anterior vimos como crear la Clase BaseDeDatos para crear nuestra primera base de datos en Android, recuerda que en el foro hay un apartado de sugerencias, me gustaría que tanto para bien o para mal pusieras que te parece todo.. GRACIAS!! ;P

Me gustaría en esta segunda parte completar el proceso de la creación de la Base de datos, a ver si lo consigo! como ya puse antes, en la siguiente captura, pongo una clase típica para la creación y acceso a una Base de datos, como ves, no hay mucho código, lo único que cambiaría (si lo quieres usar para tu propia app), seria la parte en la que se definen los campos de las tablas, el resto es un copia pega, hasta aquí fácil ¿no?

Propiedades, TextView, eclipse

Lo siguiente que nos quedaría seria la conexión con ella para realizar las tareas típicas de lectura y/o escritura de la base de datos, el siguiente código se pone desde donde queremos tener acceso a ella, osea ya en nuestro código en la Actividad. Solo dos líneas.

Propiedades, TextView, eclipse

Lo primero que hacemos es crear el objeto, esto se hace como con una variable, se pone el <objeto> seguido del nombre que tendrá, después lo inicializamos poniendo un = new <objeto> y entre los () ponemos los parámetros que su constructor que separados por comas, recuerda que puedes poner el ratón encima del <objeto> y te aparecerá un globo con la ayuda que te de Eclipse con los parámetros que requiere el constructor de ese objeto.

Propiedades, TextView, eclipse

Repasemos! hemos creado una Clase BaseDeDatos, después desde nuestra Activity, hemos creado un objeto de tipo BaseDeDatos al que hemos pasado el contexto de la aplicación (this), el nombre de la base de datos (una variable tipo texto que esta en la Clase BaseDeDatos), un objeto CursorFactory que típicamente no será necesario (en ese caso pasaremos el valor null), y por último la versión de la base de datos que necesitamos (que también es una variable en la clase BaseDeDatos). La creación de este objeto puede tener varios efectos:

Si la base de datos ya existe y su versión actual coincide con la solicitada simplemente se realizará la conexión con ella.
Si la base de datos existe pero su versión actual es anterior a la solicitada, se llamará automáticamente al método onUpgrade() para convertir la base de datos a la nueva versión y se conectará con la base de datos convertida.
Si la base de datos no existe, se llamará automáticamente al método onCreate() para crearla y se conectará con la base de datos creada.

Una vez que ya tenemos una referencia al objeto BaseDeDatos (que he llamado db1), llamaremos a su método getReadableDatabase() o getWritableDatabase() para obtener una referencia a la base de datos, dependiendo si sólo necesitamos consultar los datos o necesitamos realizar modificaciones, respectivamente.

Bueno pues... ¡¡Ya estamos conectados!! no fue tan complicado no? bueno ahora podemos hacer las cosas típicas con una BD que son:

 Leer. Esta tarea se realiza mediante un Cursor al que pasamos una sentencia de SQL para seleccionar los datos que necesitamos (por ejemplo datos entre dos fechas concretas). Este cursor contendrá el resultado de la consulta y lo usaremos para volcar los datos en variables o componentes de tipo View (TextView, EditText....) para representársela al usuario.
 Insertar. Esta tarea se realiza mediante una Sentencia de SQL, y es nada menos que insertar una nueva fila o registro a nuestra DB.
 Actualizar. Es lo que llamamos 'editar' un campo o registro, lo típico si necesitamos por ejemplo cambiar un tlf, o actualizar una dirección. Esto se realiza mediante una sentencia de SQL.
 Borrar. Esta tarea también se realiza con una sentencia de SQL, le pasaremos como parámetro el _id del registro, recuerda que hablamos de el en el tema anterior.

La próxima lección explicare la parte de las sentencias SQL necesarias para crear una consulta según nuestras necesidades, no es complicado, pero como todo, tiene su historia y merece tener un tema dedicado a ellas. Saludos!