PDF de programación - Lenguaje de Programación JAVA - 10 JDBC

Imágen de pdf Lenguaje de Programación JAVA - 10 JDBC

Lenguaje de Programación JAVA - 10 JDBCgráfica de visualizaciones

Publicado el 14 de Enero del 2017
536 visualizaciones desde el 14 de Enero del 2017
316,3 KB
13 paginas
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC

287

java.sql
java.sql
10. JDBC – Introducción
JDBC(Java DataBase Connectivity), consiste en un conjunto
de clases e interfaces Java que permiten desarrollar
aplicaciones de acceso a Bases de Datos.
JDBC envía sentencias SQL a una base de datos relacional,
no es necesario reescribir la aplicación para un SGBD
(Sistema Gestor de Bases de Datos) distinto.
JDBC(Java DataBase Connectivity), está basado en X/Open
SQL CLI(Call Level Interface) y ODBC de Microsoft.

David Contreras Bárcena

288

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC - Introducción
Ventajas de JDBC frente a ODBC

ODBC no es apropiado para un uso directo con Java, porque usa
un interface C.
Una traslación literal del API ODBC en API Java no es deseable
Cuando se usa ODBC, los drivers deben instalarse manualmente
en todos los clientes.

David Contreras Bárcena

289

10. JDBC – Introducción
Pasos a dar para acceder desde una aplicación Java a una
tabla de una Base de Datos:

Paso 1. Cargar el driver adecuado que permita realizar la
conexión: El driver se corresponderá con una clase Java que se
deberá cargar en memoria.
Paso 2. Establecer la conexión con la base de datos: Se deberá
conocer el nombre de la base de datos, ubicación, usuario, etc.
Paso 3. Enviar sentencias SQL a la Base de Datos: Gracias al
lenguaje estándar SQL se generarán sentencias para manipular la
tabla.
Paso 4. Procesar los resultados obtenidos de la sentencia
SQL: Si la sentencia devuelve resultados (p.e. SELECT), se
procesarán a través de un objeto Java.

David Contreras Bárcena

290

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Drivers (Paso 1)
Existen cuatro tipos de drivers:

1. JDBC-ODBC bridge, suministra acceso JDBC mediante drivers
ODBC.
2. Native- API- portly Java, convierte llamadas JDBC en llamadas
al API de los SGBD (Oracle, Sybase, Informix, DB2,etc)
3. JDBC Net pure Java, translada llamadas JDBC en un protocolo
independiente del SGBD.
4. Native Protocol pure Java, convierte llamadas JDBC en un
protocolo de red usado por el SGBD directamente.

Se deben emplear las categorías no puras JAVA cuando no
existan drivers disponibles para el SGBD.
Las dos últimas categorías soportan tecnología JAVA pura.

David Contreras Bárcena

291

10. JDBC – Drivers (Paso 1)
El driver se corresponde con una clase Java que nuestro
programa Java deberá cargar en memoria para poder
dialogar con el SGBD.
El driver de tipo 1 está incuido en la API de JDBC, los de tipo
2, 3 y 4 los deberá suministrar el fabricante.

App JAVA
App JAVA

JDBC
JDBC

Driver
Driver
Nativo
Nativo
BBDD
BBDD

Driver JDBC
Driver JDBC
BRIDGE
BRIDGE
Driver ODBC
Driver ODBC

BBDD SQL’92
BBDD SQL’92

David Contreras Bárcena

292

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Drivers (Paso 1)
Ejemplos de drivers:

Driver JDBC-ODBC: sun.jdbc.odbc.JdbcOdbcDriver (incluido en la API
de JDBC de la plataforma J2SE)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Driver MySQL: com.mysql.jdbc.Driver (no incluido)

Class.forName ("oracle.jdbc.driver.OracleDriver");

Driver DB2: COM.ibm.db2.jdbc.app.DB2Driver (no incluido)

Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");

Driver Oracle: oracle.jdbc.driver.OracleDriver (no incluido)
Class.forName("com.mysql.jdbc.Driver");

David Contreras Bárcena

293

10. JDBC – Conexión (Paso 2)
Una vez que se dispone del driver que permite dialogar con
el SGBD, se puede establecer la conexión.
La conexión física con la base de datos se representa en
Java a través del interface Connection.
Al utilizar el driver ODBC Bridge hay que establecer una
relación entre la base de datos y el controlador ODBC de la
máquina.
La forma de realizar la conexión física con la base de datos
es a través de la invocación del método getConnection de la
clase DriverManager. Este método devuelve un objeto del
tipo Connection.
Connection con = DriverManager.getConnection (nombreBbdd)

David Contreras Bárcena

294

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Conexión (Paso 2)
Interface Connection:

close() : Se encarga de cerrar la conexión con la BD
commit(): Todos los cambios realizados desde el último commit se
vuelven pemanentes.
rollback() : Desecha todos los cambios realizados desde el último
commit.
createStatement(): Crea un objeto Statement que ejecutará
sentencias SQL.
prepareCall(String): Crea un objeto CallableStatement, para
ejecutar llamada a Stored Procedures.
prepareStatement(String) : Crea un objeto PreparedStatement,
para realizar llamadas a sentencias SQL que contengan
parametros de entrada.
setAutoCommit(boolean): Activa o desactiva el método
autocommit. Después de cada transacción se realiza un commit.

David Contreras Bárcena

295

10. JDBC – Conexión (Paso 2)
Importar las clases del paquete java.sql;
Habilitar el driver de acceso a la base de datos cargándolo en
memoria:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

Especificar el nombre completo de la base de datos:
jdbc:<subprotocolo>:<nombre>

<subprotocolo> es el driver utilizado, p.e. odbc
<nombre> es la referencia a la base de datos

Establecer la conexión:

Connection con = DriverManager.getConnection

(nombre_completo_bbdd)

Realizar las consultas contra la BBDD.

David Contreras Bárcena

296

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Conexión ODBC (Paso 2)
La referencia ODBC a la base de datos se puede realizar de dos
formas:

Referencia física a la base de datos: Se escribe el nombre de la base
de datos, empleando una ruta relativa o absoluta.

"jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb); DBQ=datos.mdb;

PWD=";

A través de un DSN (Data Source Name) : Es un nombre lógico
asociado a una base de datos con su driver correspondiente. Esto nos
permite crear una independencia entre nuestro programa JAVA y el
tipo de driver a emplear. Es un único de Windows. La relación entre el
controlador ODBC y la base de datos recibe el nombre de DSN. Esta
relación se hace en el Panel de Control, Controladores ODBC.

"jdbc:odbc:clientes";

David Contreras Bárcena

297

10. JDBC – Conexión – Ejemplo (Paso 2)

import java.sql.*;
import java.io.*;
class JDBCConexion
{

try
{

public static void main(String[] args)
{

String bd="jdbc:odbc:Clientes";

//con DSN

//String bd="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);
//DBQ=datos.mdb;”;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(bd);
con.close();

System.out.println(“Error en la conexión”);

}
catch (SQLException e)
{
}
catch (ClassNotFoundException e)
{
}

System.out.println(“Driver no encontrado”);

}

}

David Contreras Bárcena

298

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Ejecutar sentencias SQL (Paso 3)
Una vez que se ha establecido la conexión a la base de
datos, se emplea el objeto Connection para enviar
sentencias SQL al gestor.
Las sentencias SQL se pueden enviar al gestor de tres
modos diferentes:

Statement, creación de consultas de estructura estática.
PreparedStatement, creación de consultas de estructura dinámica.
CallableStatement, ejecución de procedimientos almacenados en
el gestor.

David Contreras Bárcena

299

10. JDBC – Statement (Paso 3)
Clase que permite ejecutar cualquier tipo de sentencia SQL.
Se utilizará esta clase cuando se conozcan todos los
parámetros de la consulta.
La construcción de la consulta, por lo tanto, es estática.
Métodos:

ResultSet executeQuery(String s): Devuelve un conjunto de
resultados dada un query.
int executeUpdate (String s): Ejecuta una sentencia SQL de
modifiación (INSERT, UPDATE o DELETE) devolviendo el número
de filas afectadas.

Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM personas");

David Contreras Bárcena

300

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – Statement (Paso 3)

import java.sql.*;
class Lee
{

public static void main(String args[])
{

Connection con;
try
{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

con=DriverManager.getConnection("jdbc:odbc:tabla“);

Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(

"SELECT nombre, dni from personas");

.
.
.

David Contreras Bárcena

301

10. JDBC – Statement (Paso 3)

.
.
.

while(rs.next())
{

}
rs.close();
stm.close();
con.close();

String s=rs.getString("nombre");
int i=rs.getInt("dni");
System.out.println("Nombre:" + s + " DNI:" + i);

System.out.println(“Error en acceso a base de datos”);

}
catch (SQLException e)
{
}
catch (ClassNotFoundException e)
{
}

System.out.println(“Driver no encontrado”);

David Contreras Bárcena

302

David Contreras Bárcena - ETSI

}

}

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

10. JDBC – PreparedStatement (Paso 3)
Clase que permite ejecutar cualquier tipo de sentencia SQL.
Se utilizará esta clase cuando no se conozcan alguno de los
parámetros de la consulta.
La sentencia se prepara especificando la estructura y
colocando comodines en aquellos puntos donde irán los
futuros valores.
Una vez que se conozcan dichos valores, se asignarán con
los métodos set correspondientes.
La construcción de la consulta, por lo tanto, es dinámica.

PreparedStatement pstm = con.prepareStatement("SELECT * FROM Personas
WHERE Nombre = ?");
pstm.setString(1, “Manuel”);
ResultSet rs = stm.executeQuery();

David Contreras Bárcena

303

10. JDBC – PreparedStatement (Paso 3)
Métodos:

void setTipoDato(int, tipoDato): Posee tantos métodos como
tipos de datos soporta Java. El primer argumento indica el comodín
a sustituir (comienza en 1),
  • Links de descarga
http://lwp-l.com/pdf936

Comentarios de: Lenguaje de Programación JAVA - 10 JDBC (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad