1. Docente :Ing. Marco Aurelio Porro Chulli.
Asignatura :Laboratorio de Programación III.
Ciclo : VII “A”
Integrante:
• Yenny Isabel Cuello Morón.
• Vicente Wualdir Alberca Rojas.
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
JDBC
2. INTRODUCCIÓN
• Tener conocimientos de SQL es una necesidad para cualquier profesional de las
tecnologías de la información (TI). A medida que el desarrollo de sitios web se
hace más común entre personas sin conocimientos de programación, el tener
una cierta noción de SQL se convierte en requisito indispensable para integrar
datos en páginas HTML. La mayoría de los fabricantes ofrecen APIs nativas para
acceder a sus bases de datos, sin embargo, el hecho de utilizar estas APIs, obliga
a los programadores a adaptar cada programa a las características de un servidor
determinado.
• Para solventar este problema, Java introduce la API JDBC, [2] [11] [17] [24]
compuesta por un conjunto de clases que unifican el acceso a las bases de
datos. Gracias a la utilización de JDBC, un programa Java puede acceder a
cualquier base de datos sin necesidad de modificar la aplicación. Sin embargo,
para que esto sea posible es necesario que el fabricante ofrezca un driver que
cumpla la especificación JDBC.
3. Capa de Acceso de datos, creación
Toda la conectividad de bases de datos de Java se
basa en sentencias SQL, por lo que se hace
imprescindible un conocimiento adecuado de SQL
para realizar cualquier clase de operación de bases
de datos. Aunque, afortunadamente, casi todos los
entornos de desarrollo Java ofrecen componentes
visuales que proporcionan una funcionalidad
suficientemente potente sin necesidad de que sea
necesario utilizar SQL, La especificación JDBC
requiere que cualquier driver JDBC sea compatible
con al menos el nivel «de entrada» de ANSI SQL 92
(ANSI SQL 92 Entry Level).
4. Acceso de JDBC a Bases de Datos
El API JDBC soporta dos modelos diferentes de
acceso a Bases de Datos, los modelos de dos y
tres capas.
Modelo de dos capas
Este modelo se basa en que la conexión entre la
aplicación Java o el applet que se ejecuta en el
navegador, se conectan directamente a la base
de datos.
Esto significa que el driver JDBC
específico para conectarse con la
base de datos, debe residir en el
sistema local.
5. Modelo de tres capas
En este modelo de acceso a las bases de
datos, las instrucciones son enviadas a una
capa intermedia entre Cliente y Servidor,
que es la que se encarga de enviar las
sentencias SQL a la base de datos y recoger
el resultado desde la base de datos. En este
caso el usuario no tiene contacto directo, ni
a través de la red, con la máquina donde
reside la base de datos.
6. Configuración de conexión BD con
NetBeans.
• Primero descargamos el controlador JDBC para SQL Server, nos dirigimos al siguiente
enlace: descargar JDBC.
• Una vez ingresemos a la página indicada, tenemos dos versiones para descargar,
una .exe y otro .tar.gz, ambos son iguales solo que el archivo .exe se extraerá
automáticamente al darle doble clic.
• Una vez lo tengamos descargado, los descomprimimos y guardamos en una carpeta de
nuestra preferencia.
• Creamos nuestra aplicación Java, en mi caso usaré el IDE Netbeans 8.x.
8. DB_Name es el nombre de la base de datos a la que deseamos conectarnos, la cual hemos
creado previamente con SQL Server.
integratedSecurity=true establece que usaremos la autenticación integrada de Windows, si lo
deseamos podemos conectarnos a la base de datos con el nombre y contraseña de un usuario
válido.
Para que el código que acabamos de agregar funcione debemos añadir el JDBC que
descargamos a nuestro proyecto java, hacemos lo siguiente:
9. Con esto al ejecutar el
programa veremos el
mensaje: "conectado", si todo
ha salido bien.
10. DEFINICION
JDBC (Java DataBase Connectivity) es un API de Java
que permite al programador ejecutar instrucciones en
lenguaje estándar de acceso a Bases de Datos, SQL
(Structured Query Language, lenguaje estructurado de
consultas), que es un lenguaje de muy alto nivel que
permite crear, examinar, manipular y gestionar Bases de
Datos relacionales.
11. Para que una aplicación pueda hacer operaciones en una Base de Datos, ha
de tener una conexión con ella, que se establece a través de un driver, que
convierte el lenguaje de alto nivel a sentencias de Base de Datos. Es decir, las
tres acciones principales que realizará JDBC :
establecer la conexión a una base de datos, ya sea remota o no.
enviar sentencias SQL a esa base de datos.
procesar los resultados obtenidos de la base de datos.
12. TIPOS DE DRIVERS JDBC
Puente JDBC-ODBC
La primera categoría de drivers es la
utilizada por Sun inicialmente para
popularizar JDBC y consiste en
aprovechar todo lo existente,
estableciendo un puente entre JDBC
y ODBC. Este driver convierte todas
las llamadas JDBC a llamadas
ODBC y realiza la conversión
correspondiente de los resultados.
13. Java/Binario
Este driver se salta la capa ODBC y habla
directamente con la librería nativa del
fabricante del sistema DBMS (como
pudiera ser DB-Library para Microsoft SQL
Server o CT-Lib para Sybase SQL Server).
Este driver es un driver 100% Java pero
aún así necesita la existencia de un código
binario (la librería DBMS) en la máquina
del cliente, con las limitaciones y
problemas que esto implica.
14. 100% Java/Protocolo nativo
Es un driver realizado completamente en
Java que se comunica con el servidor
DBMS utilizando el protocolo de red
nativo del servidor. De esta forma, el
driver no necesita intermediarios para
hablar con el servidor y convierte todas
las peticiones JDBC en peticiones de
red contra el servidor.
15. 100% Java/Protocolo independiente
Esta es la opción más flexible, se trata de
un driver 100% Java /Protocolo
independiente, que requiere la presencia
de un intermediario en el servidor. En este
caso, el driver JDBC hace las peticiones de
datos al intermediario en un protocolo de
red independiente del servidor DBMS. El
intermediario a su vez, que está ubicado en
el lado del servidor, convierte las peticiones
JDBC en peticiones nativas del sistema
DBMS.
16. APLICACIONES
En las aplicaciones JDBC, puede almacenar en columnas XML y recuperar datos
de columnas XML.
En las tablas de base de datos, se utiliza el tipo de datos incorporado XML para
almacenar datos XML en una columna en forma de conjunto estructurado de
nodos en formato de árbol.
Las aplicaciones JDBC pueden enviar datos XML al servidor de datos o recuperar
datos XML del servidor de datos de una de estas maneras:
Como datos XML textuales
Como datos XML binarios, si el servidor de datos los admite
17. En las aplicaciones JDBC, puede:
Almacenar un documento XML completo en una columna XML mediante los
métodos setXXX.
Recuperar un documento XML completo de una columna XML mediante los
métodos getXXX.
Recuperar una secuencia de un documento en una columna XML mediante la
función XMLQUERY de SQL para recuperar la secuencia en una secuencia
serializada en la base de datos y, a continuación, utilizar métodos getXXX para
recuperar los datos en una variable de aplicación.
Recuperar una secuencia de un documento en una columna XML en forma de una
tabla definida por el usuario mediante la función XMLTABLE de SQL para definir la
tabla de resultados y recuperarla.
18. Ejemplo
Ejemplo 1: Conexión a una base de datos MySQL y consulta de una tabla.
import java.sql.*;
public class EjemploAccesoBD1 {
public static void main(String[] args) {
Connection conexion = null;
try {
// Cargar el driver
Class.forName("com.mysql.jdbc.Driver");
// Se obtiene una conexión con la base de datos.
// En este caso nos conectamos a la base de datos prueba
// con el usuario root y contraseña 1daw
conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root",
"1daw");
19. // Se crea un Statement, para realizar la consulta
Statement s = conexion.createStatement();
// Se realiza la consulta. Los resultados se guardan en el ResultSet rs
ResultSet rs = s.executeQuery("select * from persona");
// Se recorre el ResultSet, mostrando por pantalla los resultados.
while (rs.next()) {
System.out.println(rs.getInt("Id") + " " + rs.getString(2) + " " +
rs.getDate(3));
}
20. } catch (SQLException e) {
System.out.println(e.getMessage());
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
} finally { // Se cierra la conexión con la base de datos.
try {
if (conexion != null) {
conexion.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}