Conectar Java a SQLite

Conectar Java a SQLite con NetBeans

Dependencias del pom.xml

<dependencies>
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.45.1.0</version>
    </dependency>
</dependencies>

Importamos las librerías de SQLite

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.io.File;

Función para crear Crear la BD

public static void crearBD(String url) {

    System.out.println("Creando BD...");

    try (Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement()) {

        conn.setAutoCommit(false);

        stmt.execute("""
        CREATE TABLE IF NOT EXISTS salones (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            grado INTEGER NOT NULL,
            grupo TEXT NOT NULL
        );
        """);

        stmt.execute("""
        CREATE TABLE IF NOT EXISTS alumnos (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            idSalon INTEGER,
            nombre TEXT,
            ape_pat TEXT,
            ape_mat TEXT,
            fech_nac DATE,
            FOREIGN KEY(idSalon) REFERENCES salones(id) ON DELETE CASCADE
        );
        """);

        // Salones
        stmt.execute("INSERT INTO salones VALUES (1,1,'A');");
        stmt.execute("INSERT INTO salones VALUES (2,1,'B');");
        stmt.execute("INSERT INTO salones VALUES (3,2,'A');");
        stmt.execute("INSERT INTO salones VALUES (4,2,'B');");

        // Alumnos
        stmt.execute("INSERT INTO alumnos VALUES (1,1,'Javier','Martinez','Perez','2001-01-05');");
        stmt.execute("INSERT INTO alumnos VALUES (2,2,'Maria','Lopez','Gtz','2003-03-05');");
        stmt.execute("INSERT INTO alumnos VALUES (4,3,'Carlos','Ramirez','Lopez','2002-02-10');");
        stmt.execute("INSERT INTO alumnos VALUES (5,3,'Ana','Torres','Diaz','2002-05-21');");
        stmt.execute("INSERT INTO alumnos VALUES (6,3,'Luis','Hernandez','Soto','2002-08-15');");
        stmt.execute("INSERT INTO alumnos VALUES (7,4,'Sofia','Morales','Cruz','2002-03-30');");
        stmt.execute("INSERT INTO alumnos VALUES (8,4,'Diego','Vargas','Mendez','2002-07-12');");
        stmt.execute("INSERT INTO alumnos VALUES (9,4,'Elena','Castillo','Rios','2002-11-05');");

        conn.commit();

        System.out.println("BD creada correctamente");

    } catch (Exception e) {
        System.out.println("Error creando BD: " + e.getMessage());
    }
}

Función para crear Mostrar los datos de la bd

public static void mostrarDatos(String url) {

    try (Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement()) {

        String sql = """
        SELECT a.id, a.nombre, a.ape_pat, a.ape_mat, s.grado, s.grupo
        FROM alumnos a
        LEFT JOIN salones s ON a.idSalon = s.id
        """;

        ResultSet rs = stmt.executeQuery(sql);

        while (rs.next()) {
            System.out.println(
                    rs.getInt("id") + " | "
                    + rs.getString("nombre") + " "
                    + rs.getString("ape_pat") + " "
                    + rs.getString("ape_mat")
                    + " | Grado: " + rs.getInt("grado")
                    + " Grupo: " + rs.getString("grupo")
            );
        }

    } catch (Exception e) {
        System.out.println("Error mostrando datos: " + e.getMessage());
    }
}

Método principal

public static void main(String[] args) {

    String url = "jdbc:sqlite:escuela.db";

    File archivo = new File("escuela.db");

    if (!archivo.exists()) {
        crearBD(url);
        mostrarDatos(url); 
    } else {
        System.out.println("La BD ya existe, mostrando datos...");
        mostrarDatos(url);
    }
}

Los comentarios están cerrados.