Java con bd
Transcript of Java con bd
![Page 1: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/1.jpg)
Java con Bases de DatosJava con Bases de Datos
![Page 2: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/2.jpg)
2
Requisitos previosRequisitos previosConocimientos de programación avanzada en JavaConocimientos de programación avanzada en JavaModelado de datosModelado de datosSQLSQL
ObjetivosObjetivosIntroducción al acceso a bases de datos desde Introducción al acceso a bases de datos desde aplicaciones con Java Data Base aplicaciones con Java Data Base Connectivity Connectivity (JDBC)(JDBC)
Dirigido aDirigido aProgramadores y Analistas/Programadores que deseen Programadores y Analistas/Programadores que deseen desarrollar aplicaciones para Internet con acceso a desarrollar aplicaciones para Internet con acceso a bases de datosbases de datos
Java con bases de datosJava con bases de datos
![Page 3: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/3.jpg)
3
IntroducciónIntroducciónEl estándar JDBCEl estándar JDBCEjemplo con JDBCEjemplo con JDBCClases de JDBCClases de JDBCAPI JDBC 2.0API JDBC 2.0
ContenidosContenidos
![Page 4: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/4.jpg)
4
IntroducciónIntroducciónTecnología de acceso a bases de datosTecnología de acceso a bases de datos
Entusiasmo inicial de la tecnología Java como plataforma cliente/servidor y computación en WebDesarrolladores de bases de datos (Oracle, Informix) pretenden que los applet accedan a sus bases de datos a través de redes con tecnología Internet
En la conferencia JavaOne (mayo 1996) Sun anuncia nuevos APIs Enterprise dirigidos a aplicaciones cliente/servidor
JDBC (Java DataBase Conectivity) para acceso a bases de datosJVM incorpora un gestor específico para cada tipo de SGBD
Se apoya en la especificación y filosofía de ODBC: JDBC⇒⇒⇒⇒ ODBC
![Page 5: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/5.jpg)
5
IntroducciónIntroducciónAcceso a bases de datos desde JavaAcceso a bases de datos desde Java
API Java EnterpriseJDBC
Métodos específicos proporcionados por los desarrolladores de cada base de datosMétodos desarrollados por terceras compañías
![Page 6: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/6.jpg)
6
El estándar JDBCEl estándar JDBC
JDBC como API EnterpriseConjunto de clases de acceso a bases de datos relacionales
Desarrollo de aplicaciones cliente/servidor dirigidas a empresa mediante objetos Java, applets y servlets
Sistemas de facturaciónReserva de billetes de aviónCatálogosMarketing
Sistemas basados en una arquitectura de tres nivelesBase de datosLógica de la aplicaciónInterfaz de usuario
![Page 7: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/7.jpg)
7
El estándar JDBCEl estándar JDBCCaracterísticasCaracterísticas
Es parte de Java 1.1Independiente de la plataformaIndependiente de la base de datosModelado en base a ODBC
Disminuye la curva de aprendizaje por su amplia utilizaciónExisten implementaciones eficaces de ODBC en casi todas las plataformas y para casi todas las bases de datos
Se basa en abstracciones comunesLa conexión: conexionEl conjunto de resultados: ResultSet
![Page 8: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/8.jpg)
8
El estándar JDBCEl estándar JDBCVentajas derivadas de JDBC:ODBC
Facilita la comunicación de la aplicación con distintos SGBD’s.
Proporciona una serie de funciones para la manipulación de datos (inserción, borrado y modificación), consultas, vistas y llamadas a procedimientos.
Presenta una arquitectura de cuatro niveles:AplicaciónAdministrador de orígenes de datos.Controlador/es ODBCOrígenes de datos
![Page 9: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/9.jpg)
9
El estándar JDBCEl estándar JDBCODBC
Open DataBase Conectivity
A P L I C A C I Ó N
A d m in is t r a d o r d e o r íg n e s d e d a t o s
C o n t r o la d o r O D B C
C o n t r o la d o r O D B C
C o n t r o la d o r O D B C
O r ig e n d e d a t o s
O r ig e n d e d a t o s
O r ig e n d e d a t o s
A R Q U I T E C T U R A O D B C
![Page 10: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/10.jpg)
10
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 11: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/11.jpg)
11
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 12: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/12.jpg)
12
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 13: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/13.jpg)
13
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 14: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/14.jpg)
14
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 15: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/15.jpg)
15
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 16: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/16.jpg)
16
El estándar JDBCEl estándar JDBCConfiguración JDBC:ODBC
![Page 17: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/17.jpg)
17
El estándar JDBCEl estándar JDBCImplementación
Paquete java.sqlLos programas deben declarar el uso de este paquete
import java.sql.*
El Gestor JDBCPara una base de datos concreta
OracleBorland
Genérico para varias bases de datos
JDBC:ODBCSe traducen las llamadas JDBC en llamadas ODBC
![Page 18: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/18.jpg)
Ejemplo de implementación de
una firma de bases de datos
Implementación de Sun del ODBC
fichero .class
API JDBC
Gestor de JDBC
PuenteJDBC a ODBC
Gestor ODBC
Sistema Operativo
fichero .class
API JDBC
Gestor de JDBC de la firma de la
base de datos
Sistema OperativoInternet/intranet
Servidor de Base de Datos
Basede
Datos
Applet / Aplicación
Máquina Virtual Java
SO huésped / Hardw are
![Page 19: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/19.jpg)
19
El estándar JDBCEl estándar JDBCEsquema de clases
Mecanismo:Establecer conexión
Crear sentencia
Ejecutar sentencia
Procesar resultados
Finalizar sentencia
Cerrar conexión
Gestor debase de datos
Conexión Conexión Conexión
Sentencia
SentenciaSentenciaInvocable
SentenciaPreparada
executeUpdate()
executeQuery()
execute() getMoreResults()
getResultSet()
Resultset
Metadatos
Datos
getConnection()
prepareCall()createStatement() prepareStatement()
![Page 20: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/20.jpg)
20
TIPO Clase JDBC
Implementaciónjava.sql.Driverjava.sql.DriverManagerjava.sql.DriverPropertyInfo
Conexión a base de datos java.sql.Connection
Sentencias SQLjava.sql.Statementjava.sql.PreparedStatementjava.sql.CallableStatement
Datos java.sql.ResulSet
Errores java.sql.SQLExceptionjava.sql.SQLWarning
El estándar JDBCEl estándar JDBCTipos de Clases
![Page 21: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/21.jpg)
21
Ejemplo con JDBCEjemplo con JDBCConsulta de datos
import java.sql.*;...... final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";final String BBDD = "jdbc:odbc:ARTICULOS";try {
Class.forName(DRIVER);Connection conexion = DriverManager.getConnection(BBDD);PreparedStatement select = conexion.prepareStatement(
”SELECT * FROM articulos ORDER BY Titulo”);ResultSet r = select.executeQuery();while (resultado.next()) {
System.out.println(resultado.getString("Titulo"));}resultado.close(); select.close(); conexion.close();
} catch (Exception e) {System.out.println("Error: " + e);
}
DriverDriver
ConexiónConexión
SQLSQL
Acceso alos camposAcceso alos campos
![Page 22: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/22.jpg)
22
Ejemplo con JDBCEjemplo con JDBCConsulta de datos con condición
import java.sql.*;final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";final String BBDD = "jdbc:odbc:ARTICULOS";try {
Class.forName(DRIVER);Connection conexion = DriverManager.getConnection(BBDD);PreparedStatement select = conexion.prepareStatement(
"SELECT * FROM articulos WHERE Titulo=?");select.setString(1,miTitulo.getText());ResultSet resultado = select.executeQuery();while (resultado.next()) {
lista.addItem(resultado.getString("Titulo"));}resultado.close(); select.close(); conexion.close();
} catch (Exception e) {System.out.println("Error: " + e);
}
![Page 23: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/23.jpg)
23
Ejemplo con JDBCEjemplo con JDBCInserción de datos
import java.sql.*;final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";final String BBDD = "jdbc:odbc:ARTICULOS";try {
Class.forName(DRIVER);Connection conexion = DriverManager.getConnection(BBDD);PreparedStatement insert = conexion.prepareStatement(
”INSERT INTO articulos VALUES (?,?,?)");insert.setString(1,miTitulo);insert.setString(2,miCodigo);insert.setString(3,miTema);int resultado = insert.executeUpdate();insert.close(); conexion.close();
} catch (Exception e) {System.out.println("Error: " + e);
}
![Page 24: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/24.jpg)
24
Clases de JDBCClases de JDBCjava.sql.DriverManager
Lleva el control de los gestores JDBC disponiblesEs posible que existan varios dentro del sistemaPor defecto, carga todos los disponibles en sql.driversEl gestor cargado debería registrarse con el método registerDriver
Sintaxis utilizada: URL’sjdbc:<subprotocolo>:<parámetros>jdbc:odbc:NOTICIAS:UID=Sistema;PWD=SistemaPW
SeguridadHay que tener presente el modelo de seguridad
final String BBDD = "jdbc:odbc:ARTICULOS";Connection conexion =
DriverManager.getConnection(BBDD);
![Page 25: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/25.jpg)
25
Clases de JDBCClases de JDBCjava.sql.Driver
Gestor de información y configuración generalSe carga durante la inicialización
medianteDriverManager.registerDriverClass.forName
Se le pedirá información a lo largo del programaResidirá en memoriaMétodos:
connectgetPropertyInfo
final String DRIVER ="sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(DRIVER);
![Page 26: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/26.jpg)
26
Clases de JDBCClases de JDBCjava.sql.Connection
Puntero a la base de datos
Proporciona el contexto de trabajo para los objetos Statement y ResultSet
Soporta propiedades de transacciónsetAutoCommitcommitrollback
Connection conexion =DriverManager.getConnection(BBDD);
![Page 27: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/27.jpg)
27
Clases de JDBCClases de JDBCjava.sql.Statement
Ejecución de una sentencia SQLexecuteQuery
Sentencias SELECTdevuelve un ResultSet
executeUpdateSentencias INSERT, DELETE, UPDATE, CREATEDevuelve un entero
executeSentencias desconocidas en tiempo de compilación o sentencias que devuelven resultados complejosDevuelve true/false
Statement select = conexion.createStatement();
ResultSet resultado =
select.executeQuery(“SELECT * FROM ACTIVIDAD”);
![Page 28: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/28.jpg)
28
Clases de JDBCClases de JDBCjava.sql.PreparedStatement
Extiende Statement para añadir sentencias precompiladas SQL
Compila la sentencia SQL la primera vezSentencias que son llamadas más de una vez en el programa
Soporta parámetros de entradasetInt, setFloat, setLong, setString
PreparedStatement select = conexion.prepareStatement(
"SELECT * FROM articulos WHERE Titulo=?");
select.setString(1,”Mi titulo”);
ResultSet resultado = select.executeQuery();
![Page 29: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/29.jpg)
29
Clases de JDBCClases de JDBCjava.sql.ResultSet
Contiene los datos resultado de una sentencia SQLSe recuperan secuencialmente en filas
next sirve para avanzar una filaSe puede acceder a los datos de las columnas en cualquier orden
índice de posiciónnombre del campoMétodos: getString, getFloat, getInt, etc.Método wasNull()
PreparedStatement select = conexion.prepareStatement("SELECT * FROM articulos WHERE Titulo=?");
select.setString(1,”Mi titulo”);
ResultSet resultado = select.executeQuery();
while (resultado.next())System.out.println(resultado.getString("Titulo"));
![Page 30: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/30.jpg)
30
Ejemplo con JDBCEjemplo con JDBCPrograma para trabajar con MySQL
import java.sql.*;final String DRIVER = "org.gjt.mm.mysql.Driver";final String BBDD = "jdbc:mysql://chico.inf-cr.uclm.es/articulos";try {
Class.forName(DRIVER);Connection conexion = DriverManager.getConnection(BBDD);Statement insert = conexion.prepareStatement(
”INSERT INTO articulos VALUES (?,?,?)");insert.setString(1,miTitulo);insert.setString(2,miCodigo);insert.setString(3,miTema);int resultado = insert.executeUpdate();insert.close(); conexion.close();
} catch (Exception e) {System.out.println("Error: " + e);
}
![Page 31: Java con bd](https://reader034.fdocuments.ec/reader034/viewer/2022052621/557b9678d8b42aa0758b490b/html5/thumbnails/31.jpg)
31
API JDBC 2.0API JDBC 2.0Características
RequerimientosVersión 1.2 o superior de JDKDriver con soporte para JDBC 2.0DBMS que implemente características de JDBC 2.0
AportacionesAmpliación de la interfaz ResultSet
Movimiento a cualquier posición y direcciónRealización de modificaciones en los datos a través del ResultSet (sin SQL)Soporte para ejecución Batch de sentenciasNuevos tipos de datos correspondientes a SQL3