SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Java y Bases de Datos
JDBC
 JDBC (Java DataBase Connectivity) es la tecnología
Java que permite a las aplicaciones interactuar
directamente con motores de base de datos
relacionales.
 La API JDBC es una parte integral de la plataforma
Java, por lo tanto no es necesario descargar ningún
paquete adicional para usarla.
 JDBC provee una interfase única, que independiza
a las aplicaciones del motor de la base de datos.
 Un driver JDBC es usado por la JVM para traducir
las invocaciones JDBC en invocaciones que la base
de datos entiende.
Arquitectura JDBC
Java Application
JDBC API
Data Base Drivers
Access SQL
Server
DB2 Informix MySQL Sybase
Drivers JDBC
 Existen drivers JDBC para la mayoría de los motores
de base de datos. Típicamente, los fabricantes de
bases de datos proveen el driver JDBC para su
motor.
 Es posible encontrarlos en Internet:
– http://industry.java.sun.com/products/jdbc/drivers
 Hay cuatro tipos de JDBC drivers:
 Tipo 1: JDBC-ODBC Bridge
 Tipo 2: Native API, partially java
 Tipo 3: JDBC Network Driver
 Tipo 4: 100% Java
Driver Tipo 1 (JDBC-ODBC
Bridge)
 El driver JDBC-ODBC es parte de la plataforma Java. No es un
driver 100 % Java.
 Traduce invocaciones JDBC a invocaciones ODBC a través de
librerías ODBC del sistema operativo.
 No es una solución buena, pero en algunas situaciones es la
única, tal es el caso de Microsoft Access.
Desventajas
• Se requieren múltiples capas de software para hacer las
llamadas a la Base de Datos.
• Se requiere la instalación de software adicional
(configuración ODBC).
Código JAVACódigo JAVA
API ODBCAPI ODBC
Driver ODBCDriver ODBC
Puente
JDBC-ODBC
Puente
JDBC-ODBC
Base de Datos
Driver Tipo 2 (Native API, partially
java)
 Conceptualmente es similar al driver de tipo 1, excepto
que se usa una capa menos (no está la capa de
traducción ODBC). No es un driver 100 % Java.
 Cuando se realiza una invocación a la base de datos, a
través de JBDC, el driver traduce el requerimiento en
algo que la API del fabricante de la base de datos
entiende.
 La base de datos, procesa el requerimiento y devuelve
el resultado a través de la API que lo reenvía al driver.
El driver formatea el resultado al estándar JDBC y lo
devuelve al programa.
Driver
JDBC
Driver
JDBC
Base de Datos
Código JAVACódigo JAVA
Protocolo específico
del Proveedor
Código Java y Nativo
Driver Tipo 3 (JDBC Network
Driver)
 Actúa como un front-end para acceso a servidores de
base de datos.
 El programa envía una invocación JDBC a través del
´proxy´ driver, quien lo envía a la capa intermedia o
middleware, sin traducción.
 El middleware completa el requerimiento usando otro
driver JDBC.
 El middleware habla con la base de datos, a través de
un driver Tipo 1 o 2.
 Requiere de la instalación de un middleware.
Código JAVACódigo JAVA
Servidor de
Acceso a DB
Servidor de
Acceso a DB
Driver
Tipo 1 ó 2
Driver
Tipo 1 ó 2
JDBC DriverJDBC Driver
Base de Datos
Front-End que accede al
middleware. Es un ´proxy
´driver
Driver Tipo 4
 Es un driver Java Puro, que habla directamente con
la base de datos.
 Es el método más eficiente de acceso a bases de
datos.
 No requiere de ninguna librería adicional ni de la
instalación de un middleware, con lo cual es de
deployment más simple.
 La mayoría de los fabricantes, proveen drivers JDBC
de tipo 4 para sus bases de datos.
DriverJDBC
(Java Puro)
Base de Datos
Código JAVACódigo JAVA
Protocolo específico
del Proveedor
La API JDBC
 Las clases e interfases de la API JDBC están en el
paquete java.sql.
 En estas se encuentran definidos métodos que permiten:
conectarse y recuperar información de la BD.
ResultSetMetaDataResultSetMetaData DataBaseMetaDataDataBaseMetaDataResultSetResultSetConnectionConnectionDriverManagerDriverManager StatementStatement
PreparedStatementPreparedStatement
CallableStatementCallableStatement
Conexión a la Base de Datos
 La conexión se establece a través del driver, que se
carga en ejecución mediante el método:
• Class.forName(String nombredelDriver)
 Una vez cargado el driver, la conexión a la BD se
realiza invocando a alguno de los siguientes métodos
de la clase java.sql.DriverManager :
• public static Connection getConnection(String url)
• public static Connection getConnection(String url,
java.util.Properties info)
• public static Connection getConnection(String url,
String usr, String pwd)
Ejemplo de una conexión a una
Base de Datos
. . .
Connection miConexion;
try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
miConexion = DriverManager.getConnection(“jdbc:odbc:empleadosDB”);
. . .
} catch (ClassNotFoundException e1) {
// captura el error: “no se encontró el driver”
} catch (SQLException e2) {
// captura el error: “no se pudo conectar a la BD”
}
Nombre del Driver url de la BD
Esta conexión será
usada para realizar
todas las operaciones
sobre la Base de Datos.
Se deben manejar por lo menos dos excepciones. Una es para
controlar si el Driver no es encontrado y la otra para verificar si
se realizó la conexión.
Origen de datos
Ejecución de Sentencias SQL
 Para realizar una consulta SQL a la BD se requiere
de la creación de un objeto: Statement,
PreparedStatement o CallableStatement usando
uno de los métodos de Connection.
• Statement createStatement()
• Statement createStatement(int resultSetType, int
resultSetConcurrency)
• PreparedStatement preparedStatement(String
sql)
• PreparedStatement preparedStatement(String
sql, int resultSetType, int resultSetConcurrency)
• CallableStatement prepareCall(String sql)
• CallableStatement prepareCall(String sql, int
resultSetType, int resultSetConcurrency)
PreparedStatement
 Una sentencia preparada (PreparedStatement) es un tipo de
sentencia que mejora la performance de las consultas.
 Una sentencia preparada se precompila antes de ser usada. La
versión precompilada acepta diferente número de parámetros.
 A diferencia de las sentencias tradicionales cuando se crean
requieren de la sentencia SQL como argumento del
constructor. Esta sentencia es enviada al motor de BD para su
compilación y cuando se ejecuta el motor de BD la corre sin
previa compilación.
 Las sentencias preparadas manejan parámetros, con lo cual
pueden ejecutarse muchas veces con distintos parámetros.
 Ejemplo:
• PreparedStatement p_sent =
miConexion.prepareStatement(“SELECT * FROM Empleados WHERE
edad = ?”)
p_sent.setInt(1, 55); //Se setea el parámetro
p_sent.executeQuery(); //Retorna objeto de tipo ResultSet
Cerrar la Base de Datos
 Es importante cerrar/liberar las conexiones una vez
que ya no son usadas. De esta manera el objeto
Connection será marcado para ser recolectado por
el Garbage Collector y, además teniendo en cuenta
que la cantidad de conexiones disponibles a una BD
es limitada, es importante cerrar las conexiones que
no son más usadas.
 El método destroy() es el apropiado para llevar a
cabo esta acción.
public void destroy() {
try {
dbCon.close();
} catch (Exception e) {.... }
}
Esquema de una aplicación con DB
Introduccion a SQL
SQL – Recuperar Información
 La sentencia SELECT es la que se utiliza cuando se
quieren recuperar datos de la información almacenada
en un conjunto de columnas. Las columnas pueden
pertenecer a una o varias tablas y se puede indicar el
criterio que deben seguir las filas de información que se
extraigan.
 La sintáxis de la sentencia es:
SELECT <seleccion>
FROM <tablas>
WHERE <condiciones de seleccion>
[ORDER BY <columna> [ASC | DESC] [,<columna> [ASC |
DESC]]...]
SQL – Recuperar Información
• Ejemplos:
• SELECT * FROM Empleados WHERE departamento
= '022';
• SELECT * FROM Empleados WHERE departamento
= '022' ORDER BY apellido;
• SELECT apellido, nombre FROM Empleados
WHERE departamento = '022' ORDER BY apellido;
• SELECT CODIGO, APELLIDO, NOMBRE FROM
Empleados AS e, Departamentos AS d WHERE
d.sede = 'Sevilla' AND d.departamento =
e.departamento;
SQL – Almacenar Información
• La sentencia INSERT se utiliza cuando se quieren
insertar filas de información en las columnas.
• La sintáxis de la sentencia es:
• INSERT INTO <nombre tabla>
[(<nombre columna> [,<nombre columna]...)]
VALUES (<expresion> [,<expresion>]...)
• Por ejemplo:
• INSERT INTO Empleados VALUES ( ’00066’,
’Garrido’, ’Juan’, ’Ingeniero’ , ’022’ );
SQL – Eliminar Información
• La sentencia DELETE es la que se emplea cuando se
quieren eliminar filas de las columnas.
• La sintáxis es:
• DELETE FROM <nombre tabla>
WHERE <condicion busqueda>
• Si no se especifica la cláusula WHERE, se eliminará el
contenido de la tabla completamente.
• Ejemplos:
• DELETE FROM Empleados WHERE
empleado=’00045’;
• DELETE FROM Empleados;
SQL – Modificar Información
• Para actualizar filas ya existentes en las columnas, se
utiliza la sentencia UPDATE.
• La sintáxis es:
• UPDATE <nombre tabla>
SET <nombre columna = ( <expresion> | NULL ) [, <nombre
columna = ( <expresion> | NULL )]...
WHERE <condicion busqueda>
• Por ejemplo:
• UPDATE Empleados
SET nombre = 'Pedro Juan'
WHERE empleado='00012';
Ver TestSql.java, Prueba.mdb, configurar el odbc.

Weitere ähnliche Inhalte

Was ist angesagt? (18)

Jdbc
JdbcJdbc
Jdbc
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIA
 
Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
Java.sql.*
Java.sql.*Java.sql.*
Java.sql.*
 
JDBC
JDBCJDBC
JDBC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Java DataBase Connectivity
Java DataBase ConnectivityJava DataBase Connectivity
Java DataBase Connectivity
 
JDBC
JDBCJDBC
JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
JDBC
JDBCJDBC
JDBC
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones Java
 
Java con bd
Java con bdJava con bd
Java con bd
 
Conexion a bases de datos
Conexion a bases de datosConexion a bases de datos
Conexion a bases de datos
 

Andere mochten auch

Bases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaBases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaYoni Villegas
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 javajbersosa
 
Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Prof. Javier Troya
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server PEPE QH
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2jion1987
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateCarlos Hernando
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL WorkbenchJair Ospino Ardila
 
SO - Administración de Memoria
SO - Administración de MemoriaSO - Administración de Memoria
SO - Administración de MemoriaLuis Eraso
 
Crear y Eliminar Bases de datos en MySQL Workbench
Crear y Eliminar  Bases de datos en MySQL WorkbenchCrear y Eliminar  Bases de datos en MySQL Workbench
Crear y Eliminar Bases de datos en MySQL WorkbenchJair Ospino Ardila
 
Instalacion de MySQL Workbench
Instalacion de MySQL  WorkbenchInstalacion de MySQL  Workbench
Instalacion de MySQL WorkbenchJair Ospino Ardila
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en JavaIker Canarias
 

Andere mochten auch (20)

Bbdd en java
Bbdd en javaBbdd en java
Bbdd en java
 
Bases De Datos Mysql Con Java
Bases De Datos Mysql Con JavaBases De Datos Mysql Con Java
Bases De Datos Mysql Con Java
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 java
 
Clase No.2 Preparando el Ambiente de Java
Clase No.2 Preparando el Ambiente de Java Clase No.2 Preparando el Ambiente de Java
Clase No.2 Preparando el Ambiente de Java
 
Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01Gestiondered 100222091702-phpapp01
Gestiondered 100222091702-phpapp01
 
Jdb ccompleto
Jdb ccompletoJdb ccompleto
Jdb ccompleto
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server
 
Introducción práctica a JPA2
Introducción práctica a JPA2Introducción práctica a JPA2
Introducción práctica a JPA2
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a Hibernate
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Crear conexion a servidor en MySQL Workbench
Crear conexion a servidor en  MySQL WorkbenchCrear conexion a servidor en  MySQL Workbench
Crear conexion a servidor en MySQL Workbench
 
SO - Administración de Memoria
SO - Administración de MemoriaSO - Administración de Memoria
SO - Administración de Memoria
 
Video 5 base de datos
Video 5  base de datosVideo 5  base de datos
Video 5 base de datos
 
Modelos (UML)
Modelos (UML)Modelos (UML)
Modelos (UML)
 
Curso basico de base de datos con java
Curso basico de base de datos con javaCurso basico de base de datos con java
Curso basico de base de datos con java
 
Crear y Eliminar Bases de datos en MySQL Workbench
Crear y Eliminar  Bases de datos en MySQL WorkbenchCrear y Eliminar  Bases de datos en MySQL Workbench
Crear y Eliminar Bases de datos en MySQL Workbench
 
Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Instalacion de MySQL Workbench
Instalacion de MySQL  WorkbenchInstalacion de MySQL  Workbench
Instalacion de MySQL Workbench
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 

Ähnlich wie JDBC y SQL BD (20)

Bases de Datos en en www.fiec.espol.edu.ec
Bases de Datos en  en www.fiec.espol.edu.ecBases de Datos en  en www.fiec.espol.edu.ec
Bases de Datos en en www.fiec.espol.edu.ec
 
Acceso a datos con JDBC.pdf
Acceso a datos con JDBC.pdfAcceso a datos con JDBC.pdf
Acceso a datos con JDBC.pdf
 
Acceso a datos con JAVA
Acceso a datos con JAVAAcceso a datos con JAVA
Acceso a datos con JAVA
 
Qué es jdbc
Qué es jdbcQué es jdbc
Qué es jdbc
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc diapositivva
Jdbc diapositivvaJdbc diapositivva
Jdbc diapositivva
 
JDBC
JDBC JDBC
JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Jdbc
JdbcJdbc
Jdbc
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Jdbc
JdbcJdbc
Jdbc
 
Bases de Datos con JDBC para MySQL
Bases de Datos con JDBC para MySQLBases de Datos con JDBC para MySQL
Bases de Datos con JDBC para MySQL
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 

Mehr von Karin Rojas Gutiérrez (20)

Director financiero cfo
Director financiero cfoDirector financiero cfo
Director financiero cfo
 
Trabajo final-matematica
Trabajo final-matematicaTrabajo final-matematica
Trabajo final-matematica
 
Bucles 121005113556-phpapp01
Bucles 121005113556-phpapp01Bucles 121005113556-phpapp01
Bucles 121005113556-phpapp01
 
Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1
 
Prctica n°2
Prctica n°2Prctica n°2
Prctica n°2
 
Virusinformaticos
VirusinformaticosVirusinformaticos
Virusinformaticos
 
Practicas intermedias harvar
Practicas intermedias harvarPracticas intermedias harvar
Practicas intermedias harvar
 
TRUJILLO CAPITAL DE LA PRIMAVERA
TRUJILLO CAPITAL DE LA PRIMAVERATRUJILLO CAPITAL DE LA PRIMAVERA
TRUJILLO CAPITAL DE LA PRIMAVERA
 
B learning
B learningB learning
B learning
 
Presentacion bewnode
Presentacion bewnodePresentacion bewnode
Presentacion bewnode
 
Capacidaddelcerebro
CapacidaddelcerebroCapacidaddelcerebro
Capacidaddelcerebro
 
Capacidaddelcerebro
CapacidaddelcerebroCapacidaddelcerebro
Capacidaddelcerebro
 
Fredmind presentacion1
Fredmind presentacion1Fredmind presentacion1
Fredmind presentacion1
 
Herramienta Educativa Ardora
Herramienta Educativa ArdoraHerramienta Educativa Ardora
Herramienta Educativa Ardora
 
Manual de issuu
Manual de issuuManual de issuu
Manual de issuu
 
B learning
B learningB learning
B learning
 
B learning
B learningB learning
B learning
 
Ardora
ArdoraArdora
Ardora
 
Fredmind presentacion1
Fredmind presentacion1Fredmind presentacion1
Fredmind presentacion1
 
Capacidaddelcerebro
CapacidaddelcerebroCapacidaddelcerebro
Capacidaddelcerebro
 

JDBC y SQL BD

  • 1. Java y Bases de Datos
  • 2. JDBC  JDBC (Java DataBase Connectivity) es la tecnología Java que permite a las aplicaciones interactuar directamente con motores de base de datos relacionales.  La API JDBC es una parte integral de la plataforma Java, por lo tanto no es necesario descargar ningún paquete adicional para usarla.  JDBC provee una interfase única, que independiza a las aplicaciones del motor de la base de datos.  Un driver JDBC es usado por la JVM para traducir las invocaciones JDBC en invocaciones que la base de datos entiende.
  • 3. Arquitectura JDBC Java Application JDBC API Data Base Drivers Access SQL Server DB2 Informix MySQL Sybase
  • 4. Drivers JDBC  Existen drivers JDBC para la mayoría de los motores de base de datos. Típicamente, los fabricantes de bases de datos proveen el driver JDBC para su motor.  Es posible encontrarlos en Internet: – http://industry.java.sun.com/products/jdbc/drivers  Hay cuatro tipos de JDBC drivers:  Tipo 1: JDBC-ODBC Bridge  Tipo 2: Native API, partially java  Tipo 3: JDBC Network Driver  Tipo 4: 100% Java
  • 5. Driver Tipo 1 (JDBC-ODBC Bridge)  El driver JDBC-ODBC es parte de la plataforma Java. No es un driver 100 % Java.  Traduce invocaciones JDBC a invocaciones ODBC a través de librerías ODBC del sistema operativo.  No es una solución buena, pero en algunas situaciones es la única, tal es el caso de Microsoft Access. Desventajas • Se requieren múltiples capas de software para hacer las llamadas a la Base de Datos. • Se requiere la instalación de software adicional (configuración ODBC). Código JAVACódigo JAVA API ODBCAPI ODBC Driver ODBCDriver ODBC Puente JDBC-ODBC Puente JDBC-ODBC Base de Datos
  • 6. Driver Tipo 2 (Native API, partially java)  Conceptualmente es similar al driver de tipo 1, excepto que se usa una capa menos (no está la capa de traducción ODBC). No es un driver 100 % Java.  Cuando se realiza una invocación a la base de datos, a través de JBDC, el driver traduce el requerimiento en algo que la API del fabricante de la base de datos entiende.  La base de datos, procesa el requerimiento y devuelve el resultado a través de la API que lo reenvía al driver. El driver formatea el resultado al estándar JDBC y lo devuelve al programa. Driver JDBC Driver JDBC Base de Datos Código JAVACódigo JAVA Protocolo específico del Proveedor Código Java y Nativo
  • 7. Driver Tipo 3 (JDBC Network Driver)  Actúa como un front-end para acceso a servidores de base de datos.  El programa envía una invocación JDBC a través del ´proxy´ driver, quien lo envía a la capa intermedia o middleware, sin traducción.  El middleware completa el requerimiento usando otro driver JDBC.  El middleware habla con la base de datos, a través de un driver Tipo 1 o 2.  Requiere de la instalación de un middleware. Código JAVACódigo JAVA Servidor de Acceso a DB Servidor de Acceso a DB Driver Tipo 1 ó 2 Driver Tipo 1 ó 2 JDBC DriverJDBC Driver Base de Datos Front-End que accede al middleware. Es un ´proxy ´driver
  • 8. Driver Tipo 4  Es un driver Java Puro, que habla directamente con la base de datos.  Es el método más eficiente de acceso a bases de datos.  No requiere de ninguna librería adicional ni de la instalación de un middleware, con lo cual es de deployment más simple.  La mayoría de los fabricantes, proveen drivers JDBC de tipo 4 para sus bases de datos. DriverJDBC (Java Puro) Base de Datos Código JAVACódigo JAVA Protocolo específico del Proveedor
  • 9. La API JDBC  Las clases e interfases de la API JDBC están en el paquete java.sql.  En estas se encuentran definidos métodos que permiten: conectarse y recuperar información de la BD. ResultSetMetaDataResultSetMetaData DataBaseMetaDataDataBaseMetaDataResultSetResultSetConnectionConnectionDriverManagerDriverManager StatementStatement PreparedStatementPreparedStatement CallableStatementCallableStatement
  • 10. Conexión a la Base de Datos  La conexión se establece a través del driver, que se carga en ejecución mediante el método: • Class.forName(String nombredelDriver)  Una vez cargado el driver, la conexión a la BD se realiza invocando a alguno de los siguientes métodos de la clase java.sql.DriverManager : • public static Connection getConnection(String url) • public static Connection getConnection(String url, java.util.Properties info) • public static Connection getConnection(String url, String usr, String pwd)
  • 11. Ejemplo de una conexión a una Base de Datos . . . Connection miConexion; try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); miConexion = DriverManager.getConnection(“jdbc:odbc:empleadosDB”); . . . } catch (ClassNotFoundException e1) { // captura el error: “no se encontró el driver” } catch (SQLException e2) { // captura el error: “no se pudo conectar a la BD” } Nombre del Driver url de la BD Esta conexión será usada para realizar todas las operaciones sobre la Base de Datos. Se deben manejar por lo menos dos excepciones. Una es para controlar si el Driver no es encontrado y la otra para verificar si se realizó la conexión. Origen de datos
  • 12. Ejecución de Sentencias SQL  Para realizar una consulta SQL a la BD se requiere de la creación de un objeto: Statement, PreparedStatement o CallableStatement usando uno de los métodos de Connection. • Statement createStatement() • Statement createStatement(int resultSetType, int resultSetConcurrency) • PreparedStatement preparedStatement(String sql) • PreparedStatement preparedStatement(String sql, int resultSetType, int resultSetConcurrency) • CallableStatement prepareCall(String sql) • CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
  • 13. PreparedStatement  Una sentencia preparada (PreparedStatement) es un tipo de sentencia que mejora la performance de las consultas.  Una sentencia preparada se precompila antes de ser usada. La versión precompilada acepta diferente número de parámetros.  A diferencia de las sentencias tradicionales cuando se crean requieren de la sentencia SQL como argumento del constructor. Esta sentencia es enviada al motor de BD para su compilación y cuando se ejecuta el motor de BD la corre sin previa compilación.  Las sentencias preparadas manejan parámetros, con lo cual pueden ejecutarse muchas veces con distintos parámetros.  Ejemplo: • PreparedStatement p_sent = miConexion.prepareStatement(“SELECT * FROM Empleados WHERE edad = ?”) p_sent.setInt(1, 55); //Se setea el parámetro p_sent.executeQuery(); //Retorna objeto de tipo ResultSet
  • 14. Cerrar la Base de Datos  Es importante cerrar/liberar las conexiones una vez que ya no son usadas. De esta manera el objeto Connection será marcado para ser recolectado por el Garbage Collector y, además teniendo en cuenta que la cantidad de conexiones disponibles a una BD es limitada, es importante cerrar las conexiones que no son más usadas.  El método destroy() es el apropiado para llevar a cabo esta acción. public void destroy() { try { dbCon.close(); } catch (Exception e) {.... } }
  • 15. Esquema de una aplicación con DB
  • 17. SQL – Recuperar Información  La sentencia SELECT es la que se utiliza cuando se quieren recuperar datos de la información almacenada en un conjunto de columnas. Las columnas pueden pertenecer a una o varias tablas y se puede indicar el criterio que deben seguir las filas de información que se extraigan.  La sintáxis de la sentencia es: SELECT <seleccion> FROM <tablas> WHERE <condiciones de seleccion> [ORDER BY <columna> [ASC | DESC] [,<columna> [ASC | DESC]]...]
  • 18. SQL – Recuperar Información • Ejemplos: • SELECT * FROM Empleados WHERE departamento = '022'; • SELECT * FROM Empleados WHERE departamento = '022' ORDER BY apellido; • SELECT apellido, nombre FROM Empleados WHERE departamento = '022' ORDER BY apellido; • SELECT CODIGO, APELLIDO, NOMBRE FROM Empleados AS e, Departamentos AS d WHERE d.sede = 'Sevilla' AND d.departamento = e.departamento;
  • 19. SQL – Almacenar Información • La sentencia INSERT se utiliza cuando se quieren insertar filas de información en las columnas. • La sintáxis de la sentencia es: • INSERT INTO <nombre tabla> [(<nombre columna> [,<nombre columna]...)] VALUES (<expresion> [,<expresion>]...) • Por ejemplo: • INSERT INTO Empleados VALUES ( ’00066’, ’Garrido’, ’Juan’, ’Ingeniero’ , ’022’ );
  • 20. SQL – Eliminar Información • La sentencia DELETE es la que se emplea cuando se quieren eliminar filas de las columnas. • La sintáxis es: • DELETE FROM <nombre tabla> WHERE <condicion busqueda> • Si no se especifica la cláusula WHERE, se eliminará el contenido de la tabla completamente. • Ejemplos: • DELETE FROM Empleados WHERE empleado=’00045’; • DELETE FROM Empleados;
  • 21. SQL – Modificar Información • Para actualizar filas ya existentes en las columnas, se utiliza la sentencia UPDATE. • La sintáxis es: • UPDATE <nombre tabla> SET <nombre columna = ( <expresion> | NULL ) [, <nombre columna = ( <expresion> | NULL )]... WHERE <condicion busqueda> • Por ejemplo: • UPDATE Empleados SET nombre = 'Pedro Juan' WHERE empleado='00012'; Ver TestSql.java, Prueba.mdb, configurar el odbc.