No es un bug, es una característica no documentada

sábado, 24 de octubre de 2015

Acceso a datos. JDBC (III). Conexiones y sentencias SQL

15:46 Posted by Inazio , , No comments

Conexiones a una base de datos


Cada objeto Connection representa una conexión física con la base de datos.
Se pueden especificar más propiedades además del usuario y la contraseña al crear una conexión.
Estas propiedades se pueden especificar:
  • Codificadas en la URL (ver detalles de la base de datos)
  •  Usando métodos getConnection(…) sobrecargardos de la clase DriverManager.

Ejemplo 1
String url = "jdbc:mysql://localhost:3306/sample";
String name = "root";
String password = "pass";
Connection c = DriverManager.getConnection(url, user, password);

Ejemplo 2
String url = "jdbc:mysql://localhost:3306/sample?user=root&password=pass";
Connection c = DriverManager.getConnection(url);

Ejemplo 3
String url = "jdbc:mysql://localhot:3306/sample";
Properties prop = new Properties();
prop.setProperty("user", "root");
prop.setProperty("password", "pass");
Connection c = DriverManager.getConnection(url, prop);

Sentencias SQL

Con JDBC se pueden usar diferentes tipos de Statement.

Statement.
SQL estático en tiempo de ejecución, no acepta parámetros
Statement stmt = conn.createStatement();

PreparedStatement
Para ejecutar la misma sentencia muchas veces la “prepara”. Acepta parámetros
PreparedStatement ps = conn.prepareStatement(...);

CallableStatement
Llamadas a procedimientos almacenados.

CallableStatement s = conn.prepareCall(...);

Uso de Statement

Tiene diferentes métodos para ejecutar una sentencia.
  •  executeQuery(…). Seusa para sentencias SELECT. Devuelve un ResultSet
  • executeUpdate(…). Se usa para sentencias INSERT, UPDATE, DELETE o sentencias DDL. Devuelve el número de filas afectadas por la sentencia.
  • execute(…). Método genérico de ejecución de consultas. Puede devolver uno o más ResultSet y uno o más contadores de filas afectadas.

Uso de PreparedStatement

Los PreparedStatement se utilizan:
  • Cuando se requieren parámetros.
  • Cuando se ejecuta muchas veces la misma sentencia.
    •  La sentencia se prepara al crear el objeto.
    • Puede llamarse varias veces a los métodos execute.

PreparedStatement ps = conn.preparedStatement("INSERT INTO Libros VALUES (?, ?, ?)");
ps.setInt(1, 23);
ps.setString(2, "Bambi");
ps.setInt(3, 45);
ps.executeUpdate();

Uso de CallableStatement

Permite hacer llamadas a los procedimientos almacenados de la base de datos.
Permite parámetros de entrada IN (como el PreparedStatement), parámetros de entrada – salida INOUT y parámetros de salida OUT.

CallableStatement cstmt = conn.prepareCall("{call getEmpName (?, ?)}");
cstmt.setInt(1, 111111111);
cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
cstmt.execute();

String empName = cstmt.getString(2);

0 comentarios:

Publicar un comentario