Conexion bd en java y api necesaria

16
Transacciones Transacción = conjunto de comandos que deben completarse satisfactoriamente o fallar conjuntamente Si un comando falla, el sistema debe volver atrás todas las acciones anteriores No permite dejar la B.D. en un estado intermedio de la transacción. O se completa todo, o falla todo.

Transcript of Conexion bd en java y api necesaria

Page 1: Conexion bd en java y api necesaria

Transacciones

• Transacción = conjunto de comandos que deben completarse satisfactoriamente o fallar conjuntamente

• Si un comando falla, el sistema debe volver atrás todas las acciones anteriores

• No permite dejar la B.D. en un estado intermedio de la transacción. O se completa todo, o falla todo.

Page 2: Conexion bd en java y api necesaria

Visión general de JDBC

• API estándar para el acceso a bases de datos• Similar a ODBC• API definida desde JDK 1.1• Controladores disponibles para el acceso a la

mayoría de bases de datos

Page 3: Conexion bd en java y api necesaria

Arquitectura de JDBCAplicación JDBC Driver

• El código Java llama a las clases JDBC• JDBC carga un controlador (driver)• El controlador conecta con una determinada

base de datos• Se puede tener mas de un controlador ->

más de una base de datos• Ideal: se puede acceder a distintas bases de

datos sin cambiar el código de la aplicación

Page 4: Conexion bd en java y api necesaria

Controladores JDBC (Fig.)

JDBC

Tipo I“Bridge”

Tipo II“Native”

Tipo III“Middleware”

Tipo IV“Pure”

ODBC DriverODBC

CLI (.lib)

MiddlewareServer

Page 5: Conexion bd en java y api necesaria

JDBC Class Usage

DriverManager

Driver

Connection

Statement

ResultSet

Page 6: Conexion bd en java y api necesaria

JDBC URLsjdbc:subprotocol:source• Cada controlador tiene su propio

subprotocolo• Cada subprotocolo tiene su propia sintaxis

para acceder al origen de datosjdbc:odbc:DataSource

– P.e.. jdbc:odbc:Northwindjdbc:informix-sqli://host[:port]/database

– P.e. jdbc:informix-sqli://dbserver:2650/dbconta

MYSQL url= "jdbc:mysql://localhost:3306/cumpleanos";

Page 7: Conexion bd en java y api necesaria

DriverManager

Connection getConnection(String url, String user, String password)

• Conecta a una URL JDBC determinada mediante el usuario y password suministrados

• Lanza java.sql.SQLException• Devuelve un objeto del tipo Connection

Page 8: Conexion bd en java y api necesaria

Obtener una conexiónimport java.sql.*;import java.sql.Connection;import java.sql.DriverManager;

public class Conexion { private String driver= "com.mysql.jdbc.Driver"; // ojo aqui colocar el path del jdbc correspondiente a la conexion dependiendo de la configuracion del puerto donde corra el JDBC private String url= "jdbc:mysql://localhost:3306/db_session"; // ojo el login y pass son para entrar al motor de Base de Datos private String login= "root"; private String password= "admin"; // creamos un metodo de tipo Connection public Connection getConnection() { Connection cn= null;

try{ Class.forName(driver).newInstance();//Obtenmos el driver de mysql cn= DriverManager.getConnection(url, login, password);//Conectamos a nuestra BD // preparamos a la aplicacion en caso de algun error en la consulta } catch(SQLException e) { System.out.println(e.toString()); cn= null; // preparamos a la aplicacion en caso de algun error } catch(Exception e) { System.out.println(e.toString()); cn= null; }

return cn; }

}

Page 9: Conexion bd en java y api necesaria

Métodos de la clase Conection

Statement createStatement()– Devuelve un nuevo objeto Statement

PreparedStatement prepareStatement(String sql)– Devuelve un nuevo objeto PreparedStatement

CallableStatement prepareCall(String sql)– Devuelve un nuevo objeto CallableStatement

• ¿Por qué existen todos estos tipos distintos de “statements”? Optimización.

Page 10: Conexion bd en java y api necesaria

Statement

• Un objeto “Statement” es utilizado para ejecutar una sentencia SQL estática y obtener los resultados producidos por la misma

Page 11: Conexion bd en java y api necesaria

Statement Methods

ResultSet executeQuery(String) – Ejecuta una sentencia SQL y devuelve un único ResultSet

int executeUpdate(String) – Ejecuta una sentencia SQL del tipo INSERT, UPDATE o

DELETE. Devuelve el número de registros modificados.boolean execute(String) – Ejecuta una sentencia SQL que puede devolver múltiples

resultados• ¿Por qué todos estos tipos distintos de métodos?

Optimización.

Page 12: Conexion bd en java y api necesaria

ResultSet

• Un ResultSet ofrece acceso a una tabla de datos generada por la ejecución de un Statement.

• Solamente se puede abrir a la vez un ResultSet por Statement.

• Los registros de la tabla se obtienen en secuencia• Un ResultSet mantiene un cursor que apunta al

registro de datos actual.• El método 'next' mueve el cursor al siguiente

registro.– No se puede volver hacia atrás

Page 13: Conexion bd en java y api necesaria

Métodos de ResultSet

• boolean next() – Mueve el cursor al siguiente registro– La primera llamada a next() selecciona el primer registro– Devuelve false si no hay más registros

• void close() – Cierra el objeto ResultSet– Permite reutilizar el objeto Statement que creó el

ResultSet– Se llama de forma automática por la mayoría de métodos

de la clase Statement

Page 14: Conexion bd en java y api necesaria

Métodos de ResultSet

• Type getType(int columnIndex)– Devuelve el campo del tipo especificado (Type)– Los campos se indexan comenzando por 1 (no por 0)

• Type getType(String columnName)– Igual que el anterior pero usando el nombre de la columna

como parámetro– Menos eficiente

• int findColumn(String columnName)– Devuelve el índice de la columna que se pasa como

parámetro

Page 15: Conexion bd en java y api necesaria

Métodos ResultSet• String getString(int columnIndex) • boolean getBoolean(int columnIndex) • byte getByte(int columnIndex) • short getShort(int columnIndex) • int getInt(int columnIndex) • long getLong(int columnIndex) • float getFloat(int columnIndex) • double getDouble(int columnIndex) • Date getDate(int columnIndex) • Time getTime(int columnIndex) • Timestamp getTimestamp(int columnIndex)

Page 16: Conexion bd en java y api necesaria

Métodos ResultSet• String getString(String columnName) • boolean getBoolean(String columnName) • byte getByte(String columnName) • short getShort(String columnName) • int getInt(String columnName) • long getLong(String columnName) • float getFloat(String columnName) • double getDouble(String columnName)• Date getDate(String columnName) • Time getTime(String columnName) • Timestamp getTimestamp(String columnName)