Está en la página 1de 23

CONEXIN A LA

BASE DE DATOS
ORACLE
Carrera: Computacin e Informtica
Curso: Programacin web JSP
Docente:
Ciclo: Sexto

Qu es JDBC?

JDBC es el acrnimo de Java DataBase Conectivity

Es una especificacin de un conjunto de clases y


mtodos de operacin (API) que permiten a cualquier
programa Java acceder a sistemas de bases de datos.

El api JDBC lo podemos encontrar en los paquetes


java.sql y javax.sql y sirven para:

establecer conexiones con bases de datos

enviar sentencias SQL a dichas BDs

procesar los resultados

JDBC permite ejecutar instrucciones SQL (Structured


Query Language: Lenguaje estructurado de consultas)

JDBC

Ofrece un estndar de conexin a cualquier base de


datos disponible en el mercado.

Permite obtener los datos en forma fcil y cmoda en


ambientes cliente-servidor a travs de
Internet/Intranet.

Arquitectura para JDBC


Aplicacin JAVA
API JDBC
JDBC Driver Manager
Driver JDBC

SGBD

Driver JDBC

SGBD

JDBC

JDBC ofrece igual funcionalidad que ODBC (Open


Database Connectivity) de Microsoft

Modelos de acceso a BD
Cliente GUI

De 3 capas

Los comandos son


enviados a la capa
intermedia de servicios,
la cual enva sentencias
SQL a la base de datos.
sta las procesa y enva
los resultados de vuelta a
la capa intermedia, para
luego ser enviados al
cliente.

Permite un control de
acceso y de actualizacin.

Provee ventajas de
performance.

Applet en Java o
Navegador HTML

Aplicacin
Java

Llamadas
HTTP,
Servlets,
JSP,
EJB

JDBC
Protocolo
BD

DBMS

Servidor
BD

Arquitectura JDBC

Existe ms de 02 formas distintas de establecer


una conexin entre un programa java y una
base de datos

Usando la ODBC (creado por Microsoft para


brindar una API estndar para comunicarse con
bases de datos en una plataforma Windows)

Usando un driver JDBC que se comunica con un


driver desarrollado por la compaa que
desarrollo el DBMS (que puede estar en cualquier
lenguaje)

Arquitectura JDBC
Programa
Java

API
JDBC

Base de Datos
Puente
JDBCODBC
Api del
proveedor

En el cliente

Driver
JDBC

Driver
Servidor
JDBC

En elservidor

Cargando el Driver

Es necesario primero cargar una clase con el driver


de la base de datos (esto lo provee el vendedor de
la DBMS)

ORACLE:

PostgreSQL:

DriverManager.registerDriver(new org.postgresql.Driver());

MySQL:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

DriverManager.registerDriver(com.mysql.jdbc.Driver());

SQLSERVER

DriverManager.registerDriver(new
com.microsoft.sqlserver.jdbc.SQLServerDriver())

Estableciendo la Conexin
Connection conn =
DriverManager.getConnection(
"Cadena de conexin");
Connection conn = DriverManager.getConnection
(
"url","login", "password");

Un objeto Connection representa una conexin a una


base de datos.

La clase DriverManager intenta ubicar el controlador


que pueda conectarse a la base de datos representada en
la URL.

Conexin

Ejemplos de URL:

PostgreSQL

ORACLE:

jdbc:oracle://

jdbc:oracle:thin:@localhost:1521:orcl

MySQL

jdbc:postgresql://

jdbc:mysql://

SQLServer

jdbc:sqlserver://

Enviando sentencias SQL


JDBC permite enviar cualquier tipo de sentencia SQL.

insert

delete

update

select

create table

alter table

drop table

Sentencias SQL

JDBC provee 3 clases:


Statement: Este objeto es usado para
enviar sentecias SQL simples. Es creado
por el mtodo createStatement.
PreparedStatement: Este objeto es
usado para sentencias que requieren uno o
ms parmetros. La sentencia es
precompilada y guardada para uso futuro.
CallableStatement:

Es usado para
ejecutar procedimientos almacenados en
la base de datos.

La clase Statement

Statement stmt = con.createStatement();

En este momento la clase statement existe


pero no tiene una sentencia SQL para ejecutar.
Esta se puede pasar con los mtodos
executeUpdate(String), usada para
crear/modificar tablas (no hay resultados),
tpicamente para create, update, delete...
executeQuery(String) para hacer consultas,
retornan resultados en un objeto de la clase
ResultSet, tpicamente para select

Ejemplos de excuteUpdate

stmt.executeUpdate(create table
customer (name varchar(60), address
varchar(70), sex varchar(1) ...);

stmt.executeUpdate(insert into customer


(Florentino, Psje La Cultura, M, ...);

stmt.executeUpdate(update customer
set address = 02 de mayo nro 145
where customerid = C0001 );

Stmt.executeUpdate( delete from


customer where customerid=C0002 );

Ejemplos de excuteQuery

stmt.executeQuery(select *
from customer + where
customer = C0001);

Los resultados de una consulta se reciben


en un objeto de la clase ResultSet

ResultSet rs = stmt.executeQuery(....);

Prepared Statements
Donde

se ha usado Satement es generalmente posible


usar PreparedStatement para hacer ms eficientes
las consultas
Una instruccin con PreparedStatement va a ser, en
la mayora de los casos, traducida a una consulta SQL
nativa de la base de datos en tiempo de compilacin
La otra ventaja es que es posible usar parmetros
dentro de ella, pudiendo hacer ms flexibles las
consultas o hacer varias consultas distintas dentro de
un ciclo cambiando el valor de algunas variables
PreparedStatement ps = con.prepareSatatement(update customer
set name = ? where customerid = ?);
ps.setString(1,Juan); ps.setString(2,C0001);

Transacciones

Una transaccin consiste en una o ms sentencias que


han sido ejecutadas y luego confirmadas (commit) o
deshechas (rolled back)

Auto-commit est preseteado.

Si Auto-commit est desactivado se debe usar los


mtodos commit o rollback explcitamente.

Transacciones

Para hacer uso de transacciones debe primero


dessetearse el auto-commit

conn.setAutoCommit(false)

PreparedStatement ps = .....

....

ps.executeUpdate() .... conn.commit();

Stored Procedures

Es un grupo de sentencias SQL que se


agrupan lgicamente en una unidad para
efectuar una determinada tarea

Existen en la mayora de los DBMS pero son


dependientes de estas (no es muy estndar
la forma cmo se escriben/ejecutan)

Generalmente reciben parmetros

Se escriben con un Update y se ejecutan


con un Query

Para llamar el Stored


Procedure
MySQL:
CallableStatement cs;
cs = conn.prepareCall({call SHOW_SUPPLIERS});
ResultSet rs = cs.executeQuery();
Oracle:
cs = conn.prepareCall(" begin
update_customer(?,?,?,?,?); end; ");
PostgreSQL:
cs=conn.prepareCall(" { ?=call insert_customer(?,
?, ?, ?, ?) } ");

A continuacin:

Vamos a implementar la clase DBConn en nuestro


proyecto StoreWeb 1.0

Gracias por su atencin

También podría gustarte