- Conectar y desconectar de la BBDD
- Crear y borrar tablas
- Insertar, actualizar y borrar registros
- Lanzar diferentes consultas
- Commit y rollback de transacciones
- Uso de PreparedStatement
En el pom.xml de nuestro proyecto deberemos incluir la dependencia:
<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.15.1</version> </dependency>
El código sería:
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestSQLite { private static final String URL = "jdbc:sqlite:test.db"; public static void main(String[] args) throws SQLException { final Connection conexion = DriverManager.getConnection(URL); final DatabaseMetaData metadatos = conexion.getMetaData(); System.out.println("------------------------------------------------------------"); System.out.println("Conectados al motor de BBDD: " + metadatos.getDriverName()); System.out.println("DriverVersion: " + metadatos.getDriverVersion()); System.out.println("DatabaseProductVersion: " + metadatos.getDatabaseProductVersion()); System.out.println("JDBCMajorVersion: " + metadatos.getJDBCMajorVersion()); String sql = "DROP TABLE IF EXISTS CLIENTE;"; Statement stmt = conexion.createStatement(); stmt.execute(sql); System.out.println("------------------------------------------------------------"); System.out.println("Borrada la tabla CLIENTE"); sql = "CREATE TABLE IF NOT EXISTS CLIENTE (ID integer PRIMARY KEY, NOMBRE text NOT NULL, DIRECCION text NOT NULL, PRIORIDAD integer NOT NULL);"; stmt = conexion.createStatement(); stmt.execute(sql); System.out.println("------------------------------------------------------------"); System.out.println("Creada la tabla CLIENTE"); conexion.setAutoCommit(false); sql = "INSERT INTO CLIENTE(NOMBRE,DIRECCION,PRIORIDAD) VALUES(?,?,?);"; PreparedStatement pstmt = conexion.prepareStatement(sql); pstmt.setString(1, "cliente1"); pstmt.setString(2, "direccion1"); pstmt.setString(3, "1"); pstmt.executeUpdate(); pstmt.setString(1, "cliente2"); pstmt.setString(2, "direccion2"); pstmt.setString(3, "1"); pstmt.executeUpdate(); pstmt.setString(1, "cliente3"); pstmt.setString(2, "direccion3"); pstmt.setString(3, "2"); pstmt.executeUpdate(); conexion.commit(); System.out.println("------------------------------------------------------------"); System.out.println("Insertados 3 registros en tabla CLIENTE"); sql = "SELECT count(*) as NUMREG FROM CLIENTE"; ResultSet rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados " + rs.getInt("NUMREG") + " registros en tabla CLIENTE"); sql = "SELECT count(*) as NUMREG FROM CLIENTE WHERE NOMBRE ='cliente1'"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados " + rs.getInt("NUMREG") + " registros en tabla CLIENTE con NOMBRE ='cliente1'"); sql = "SELECT count(*) as NUMREG FROM CLIENTE WHERE NOMBRE LIKE 'cliente%'"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados " + rs.getInt("NUMREG") + " registros en tabla CLIENTE con NOMBRE like 'cliente%'"); sql = "SELECT * FROM CLIENTE WHERE PRIORIDAD=1"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados los siguientes registros en tabla CLIENTE con PRIORIDAD=1"); System.out.println("ID NOMBRE DIRECCION PRIORIDAD"); while (rs.next()) { System.out.println(rs.getInt("ID") + " " + rs.getString("NOMBRE") + " " + rs.getString("DIRECCION") + " " + rs.getInt("PRIORIDAD")); } sql = "UPDATE CLIENTE SET PRIORIDAD=2 WHERE PRIORIDAD=1"; int numRecAct = stmt.executeUpdate(sql); conexion.commit(); System.out.println("------------------------------------------------------------"); System.out.println("Actualizados "+numRecAct+" registros de PRIORIDAD=1 a PRIORIDAD=2"); System.out.println("ID NOMBRE DIRECCION PRIORIDAD"); sql = "SELECT * FROM CLIENTE"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados los siguientes registros en tabla CLIENTE"); System.out.println("ID NOMBRE DIRECCION PRIORIDAD"); while (rs.next()) { System.out.println(rs.getInt("ID") + " " + rs.getString("NOMBRE") + " " + rs.getString("DIRECCION") + " " + rs.getInt("PRIORIDAD")); } sql = "DELETE FROM CLIENTE WHERE NOMBRE='cliente1'"; numRecAct = stmt.executeUpdate(sql); System.out.println("------------------------------------------------------------"); System.out.println("Borrados los registros con NOMBRE='cliente1'"); sql = "SELECT * FROM CLIENTE"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados los siguientes registros en tabla CLIENTE"); System.out.println("ID NOMBRE DIRECCION PRIORIDAD"); while (rs.next()) { System.out.println(rs.getInt("ID") + " " + rs.getString("NOMBRE") + " " + rs.getString("DIRECCION") + " " + rs.getInt("PRIORIDAD")); } sql = "DELETE FROM CLIENTE"; numRecAct = stmt.executeUpdate(sql); conexion.rollback(); System.out.println("------------------------------------------------------------"); System.out.println("Intento cancelado de borrado completo de la tabla CLIENTE"); sql = "SELECT * FROM CLIENTE"; rs = stmt.executeQuery(sql); System.out.println("------------------------------------------------------------"); System.out.println("Encontrados los siguientes registros en tabla CLIENTE"); System.out.println("ID NOMBRE DIRECCION PRIORIDAD"); while (rs.next()) { System.out.println(rs.getInt("ID") + " " + rs.getString("NOMBRE") + " " + rs.getString("DIRECCION") + " " + rs.getInt("PRIORIDAD")); } conexion.close(); } }
Un saludo