La persistencia de datos es uno de los pilares fundamentales de la programación, ya que tener disponibilidad no volátil de la información es primordial para el funcionamiento de un programa moderno.
Hay muchas formas de almacenar la información: en memoria, archivos de texto o con conexión mediante servicios web, sin embargo una de las clásicas es el almacenamiento en local mediante bases de datos.
Esta guía pretende ayudar a realizar una conexión de datos a una base de datos SQLite 3 de una manera fácil y rápida.
- Biblioteca de conexión
- Código de conexión
- Variables necesarias
- Realizar una conexión
- Consultas
- Inserción de datos
- Lectura de datos
- Cerrar una conexión
Biblioteca de conexión
Las conexiones a bases de datos son, por un lado, difíciles de realizar, engorrosas y tediosas; por otro lado algo muy común, ya que muchos programas al rededor del mundo funcionan de esa manera. Por esa razón en Java existe una interfaz que permite realizar esas tareas y se llama JDBC, del inglés Conectividad de Base de Datos Java.
JDBC es una interfaz que permite la conexión a una base de datos SQL, y realizar las principales operaciones de consultar: SELECT
, CREATE
, INSERT
, UPDATE
y DELETE
Además la comunidad de software libre se ha encargado de generar bibliotecas que usa la interfaz JDBC para los diferentes motores de bases de datos (Oracle
, MySQL
, MongoDB
, SQLite
) permitiendo así a los desarrolladores despreocuparse de la conexión a la base de datos y centrarse en las consultas y lógica del negocio.
La biblioteca de JDBC para SQLite está disponible aquí:
Nota: Leer más sobre como importar una biblioteca a un proyecto de IntelliJ en
Código de conexión
La biblioteca permite la conexión, pero el código de consulta SQL debe ser escrito "a mano" para que sea ejecutado.
Variables necesarias
Todas las operaciones que se realizan necesitan 2 variables para ejecutar consultas que deben ser declaradas e inicializadas.
Connection
permite realizar la conexiónStatement
permite formular las consultar a realizar
Connection connection = null;
Statement statement = null;
Realizar una conexión
Antes de hacer cualquier consulta es necesario establecer una conexión entre la base de datos y el código de Java, por lo que se llama primero al controlador de SQLite mediante la interfaz JDBC, se realiza la conexión a la base de datos y se coloca el autoCommit
en falso para que las consultas se realicen solo bajo demanda.
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:test.db");
connection.setAutoCommit(false);
NOTA: en la segunda línea, se debe cambiar el nombre del archivo de base de datos de ejemplo test.db
por la base de datos que se desea modificar durante la ejecución del programa.
Consultas
Aunque las consultas se realizan mediante una simple sentencia SQL, la ejecución es diferente para cuando se requiere leer o escribir datos
Inserción de datos
Para escribir datos en la base de datos se inicializa el statement
y se ejecuta el código SQL mediante un parámetro de tipo String
en el método executeUpdate
statement = connection.createStatement();
String sql = "INSERT INTO table (column1, column2) VALUES ('value1', value2);";
statement.executeUpdate(sql);
Lectura de datos
La lectura siempre es más complicada, al igual que la inserción el statement
debe ser inicializado pero la consultar se realiza mediante el método executeQuery
que retorna un ResultSet
con el resultado.
Luego se debe iterar sobre el set de resultados y en cada iteración sustraer el valor de cada columna con los métodos getInt
y getString
acompañados con el nombre de la columna para int
y String
respectivamente.
statement = connection.createStatement();
String sql = "SELECT * FROM table;";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
}
Cerrar una conexión
Para realizar cada consulta es necesario cerrar el statemente
y realizar un commit
a la conexión. Además es recomendable siempre cerrar la conexión para evitar que la base de datos bloquee las conexiones siguientes.
statement.close();
connection.commit();
connection.close();
Nota: para más información consultar la siguiente fuente