Páginas

martes, 13 de diciembre de 2016

Primeros pasos con SQLite

Para pequeñas pruebas o arquetipos solemos utilizar una BBDD SQLite, en esta entrada dejo un pequeño trozo de código con algunas de las operaciones mas comunes:
  • 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

No hay comentarios:

Publicar un comentario