Base de datos SQLite con Java
🏢

Base de datos SQLite con Java

Tags
Blog
Created
July 26, 2021

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

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.

  1. Connection permite realizar la conexión
  2. Statement 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