Hoy en día la mayoría de aplicaciones del mercado utilizan servicios web para acceder a bases de datos externas alojadas en servidores al otro lado del mundo. Con el auge de las tarifas de datos de las compañías telefónicas y la posibilidad de encontrar conectividad Wi-Fi en casi cualquier lugar, las apps se han ido adaptando a este nuevo paradigma, dejando las bases de datos internas en un segundo plano.
No obstante, todavía existen aplicaciones cuyo uso se produce en lugares donde no siempre es fácil tener cobertura de internet: bodegas, túneles o espacios rurales. En este tipo de aplicativos es necesario proporcionar una manea de almacenar los datos mientras no haya una conexión fiable para después poder subirlas cuando haya disponibilidad de acceso a internet.
Este es un tema muy típico en todos los cursos de Android que he visto, aunque ninguno lo afronta desde un punto de vista secundario como este. Vamos a pasar rápidamente por los concepts generales y acabaré ofreciendo un vídeo con un ejemplo práctico.
¿Qué es SQLite?
En primer lugar, aclaremos esta duda: si no estás familiarizado con la programación desde hace tiempo y eres principiante, es posible que no sepas qué es exactamente SQLite. Bien, SQLite es un pequeño y ligero sistema gestor de bases de datos para dispositivos de bajas prestaciones. El hecho de utilizarlo en móviles es porque antiguamente los terminales de telefonía eran muy limitados tecnológicamente. Hoy en día ya no tiene sentido, pero se mantiene su uso por todo el código que ya hay hecho y porque, como hemos dicho antes, está en desuso.
Conectar SQLite en Android Studio
Bien, pues ahora que ya sabemos qué es lo que podemos esperar de SQLite, vamos a exponer el marco teórico de su funcionamiento. Como hemos visto, vamos a poder tener una base de datos relacionada privada en nuestra app, donde podremos guardar la información que queramos con la seguridad de que estará protegida.
La base de datos se almacena en un fichero interno del dispositivo, en la ruta data/[nombre_del_paquete]/databases.
Para poder acceder al sistema, se utiliza una clase predefinida y universal, que puedes descargar fácilmente y que se encarga de gestionar todas las operaciones de la base de datos de manera sencilla: SQLiteDatabase.
- Gestiona fácilmente las operaciones de la base de datos.
- Requiere una pequeña configuración inicial.
- Crea la base de datos si no existe cuando se instancia.
- Proporciona el objeto SqliteDatabase por medio del método getWritableDatabase.
Así pues, toda la comunicación con la base de datos se gestiona dentro de esta pequeña clase; ahí vamos a definir las operaciones CRUD (Create, Read, Update, Delete) y, además, dos métodos adicionales como son ExecSQL (para operaciones que no devuelven datos, como por ejemplo INSERTs) y RawQuery (para operaciones que devuelven resultados.
Cuando utilizamos la instrucción RawQuery, el resultado devuelto es un objeto de tipo Cursor, que funciona como un puntero que apunta a las filas de la tabla de resultados. Usando el método moveToNext() vamos a poder averiguar si hay resultados, pues si no hay la operación devolverá un valor false. Utilizando los métodos de acceso a tipos simples de datos (getString, getInt, …) podemos acceder a los datos de la columna X en la fila actual del cursor, teniendo en cuenta que la primera columna es la «0».
Todo esto se verá mejor con el ejemplo del vídeo, pero me parece importante dejar un marco teórico para que se entienda. Puedes descargar el ejemplo completo y funcional con una base de datos SQLite en Android aquí.
También te dejo el vídeo del curso Android de Youtube para que veas cómo se hace paso a paso. ¡Un saludo vikingos!