Bases de Datos usando Java : JDBC .erâ€‌); //Oracle - Tipo 4 Otra forma de registrar...

download Bases de Datos usando Java : JDBC .erâ€‌); //Oracle - Tipo 4 Otra forma de registrar el driver Capa

of 48

  • date post

    13-Aug-2018
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Bases de Datos usando Java : JDBC .erâ€‌); //Oracle - Tipo 4 Otra forma de registrar...

  • Bases de Bases de DatosDatos usandousandoJava : JDBCJava : JDBC

    Ing. Csar Julio Bustacara Medina

  • Java permite conectarse a bases de datos usandoSQL-92 (Structured Query Language).

    La gran ventaja de esta utilidad es que una BD.puede migrarse y an ser vista con el mismoprograma Java.

    Usualmente, una aplicacin con acceso a BD. seprograma en un lenguaje propietario y sobre unsistema manejador de BD propietario.

    JDBCJDBC

  • La API Java para el manejo de Bases de Datos esJDBC (Java DataBase Connectivity?).

    Este modelo no es una derivacin de ODBC (OpenDataBase Connectivity)

    JDBC est escrito en JavaODBC est escrito en C

    En esencia, la idea es la misma: un programadialoga con el JDBC driver manager quien a su vezse comunica con un controlador particular.

    JDBCJDBC

  • JDBC es una interface hacia SQL, el lenguajecomn de todas las BD relacionales modernas.

    Las BD de escritorio cuentan con GUIs paramanipular directamente los datos pero las BDservidor se controlan a travs de SQL.

    Para conectarse a una BD se debe especificar elnombre de la BD y algunos parmetros adicionales.

    JDBCJDBC

  • Capas JDBCCapas JDBC

    Capa Aplicacin (Application Layer) Conjunto de clases (API) usadas para

    hacer llamados a la base de datos atravs de SQL, obtener y procesar losresultados.

    Capa Manejador (Driver Layer) Conjunto de clases (API) que se encargan

    de establecer, manejar y terminar lacomunicacin con un RDBMS(Implementacin especifica de un driver)

  • Capas JDBCCapas JDBC

    Driver Layer

    Application Layer

  • Tipo de DriversTipo de Drivers JDBC-ODBC Bridge (1)

    Las llamadas JDBC son enviadas a una librera ODBC. Librera Nativa (2)

    Usa libreras nativas en C (Propias del RDBMS), paratrasladar instrucciones JDBC al cliente nativo.

    Protocolo de red.(3) Las llamadas JDBC son trasladadas a un protocolo

    independiente de RDBMS y enviadas a un servidor intermedio(AppServer) sobre un socket TCP/IP

    Protocolo/Librera Nativa 100% java (4) Las llamadas JDBC son convertidas directamente al

    protocolo del RDBMS

  • Tipo de DriversTipo de Drivers

    JDBC-ODBC Bridge (1) Las llamadas JDBC son enviadas a una librera ODBC.

  • Tipo de DriversTipo de Drivers

    Librera Nativa (2) Usa libreras nativas en C (Propias del RDBMS), para

    trasladar instrucciones JDBC al cliente nativo delRBDMS.

  • Tipo de DriversTipo de Drivers Protocolo de red.(3)

    Las llamadas JDBC son trasladadas a un protocoloindependiente de RDBMS y enviadas a un servidorintermedio (AppServer) sobre un socket TCP/IP

  • Tipo de DriversTipo de Drivers

    Protocolo/Librera Nativa 100% java (4) Las llamadas JDBC son convertidas directamente al

    protocolo del RDBMS

  • Modelo Two-TierModelo Two-TierCliente/ServidorCliente/Servidor

    B.D.

    Aplicacin Cliente

    Aplicacin Cliente

    Firewall

  • Drivers JDBCDrivers JDBC

    JDBC/OCI

    Oracle thin

    Servidor de drivers JDBC

  • Drivers JDBCDrivers JDBC

    ocioci :

    Intranets y para servidores middle-tier.Extranets, es necesario tener instalado

    el firewall.Convierte sus llamados directamente en

    Net8.Funciona sobre varios protocolos

  • Modelo usando OCIModelo usando OCI

    B.D.

    AplicacinJava

    AplicacinJava

    Net8Firewall

    DriverJDBC/OCI

    DriverJDBC/OCI

    Net8

  • Drivers JDBCDrivers JDBC

    ThinThin :

    Funciona para internet No requiere driver en el cliente Es 100% Java Funciona solamente sobre TCP/IP No ofrece completa funcionalidad con

    Net8

  • Modelo thinModelo thin

    B.D.

    AplicacinJava

    AplicacinJava

    Net8Firewall

    Driverthin

    Driverthin

    Net8

    Net8

  • Instalar el DriverInstalar el Driver

    Para nuestro caso bajar la libreraclasses12.zipclasses12.zip si se esta usando oracle8.1.5 o superior, de lo contrario usarla librera classes111.zipclasses111.zip ubicadas enla pgina

    http://technet.oracle.com/softwarehttp://technet.oracle.com/software

  • Instalar el DriverInstalar el Driver

    Coloquela en el directorio que desee yadicionelo al classpath

    path\classes12.zippath\classes12.zip

    Sugerencia: colocarlo en:...jdk1.3\jre\lib\ext\classes12.zip...jdk1.3\jre\lib\ext\classes12.zip adicione el directorio al classpath

  • VerificacinVerificacinimport java.sql.*;

    public class DriverLoader{ public static void main (String arg[]){

    try{ DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); }catch(Exception e){

    e.printStackTrace();}

    }}

  • VerificacinVerificacin

    Si hay error se despliega el mensaje

    Class oracle.jdbc.driver.OracleDriver not found in type declaration

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

    ^

  • Usando el metodo forName de la clase(java.lang).

    Cargar y registrar el driver a memoria. Class.forName( clase java del driver)

    Ejemplos:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//Odbc -tipo 1

    Class.forName(oracle.jdbc.driver.OracleDriver); //Oracle - Tipo 4

    OtraOtra forma de registrar forma de registrar eleldriverdriver

  • Capa AplicacinCapa Aplicacin

    Clases/Interfaces que permiten interactuar conel RDBMS a travs de instrucciones SQL (Select,DDL, DML): ConnectionConnection StatementStatement PreparedStatementPreparedStatement CallableStatementCallableStatement ResultSetResultSet ResultMetaDataResultMetaData

    Se agrupan bajo el paquete java.sql.*

  • Capa AplicacinCapa Aplicacin

    Connection Representa una sesin con la conexin a la base de datos La funcin principal de connection, es crear objetos tipo

    Statement (Statement,PreparedStatement,CallableStatement)

    Cmo se crea: Connection conn=DriverManager.getConnection ( url ); Connection conn=DriverManager.getConnection ( url,

    user, password );

    Caractersticas transaccionales: conn.setAutocommit(false/true); conn.rollback(); conn.commit();

  • Capa AplicacinCapa Aplicacin

    Statement Es el canal a travs del cual se le envan instrucciones SQL a

    la base de datos y se reciben los resultados. Las instrucciones SQL puede ser instrucciones DML (Insert,

    Update, Delete), DDL (Create, Drop) o instrucciones SELECT. Como se crea:

    Statement stmt= conn.createStatement(); Sobre una conexin se pueden tener n objetos Statement. Mtodos de ejecucin:

    Ejecucin de instrucciones SELECT ResultSet resultadoSelect =

    stmt.executeQuery(sql); Ejecucin de instrucciones DML/DDL

    int resultadoDML = stmt.executeUpdate(sql);

  • Capa AplicacinCapa Aplicacin PreparedStatement (Hereda de Statement)

    Se usa cuando se llama n veces la mismainstruccin.

    Permite el manejo de parmetros dinmicos Ventajas tcnicas sobre Statement:

    Si se tiene Statement la instruccin SQL es compilada cadavez que se usa.

    Con PreparedStatement solo compila una vez. Como se crea:

    PreparedStatement stmt= conn.prepareStatement(sql); Ejemplo:

    sql = SELECT * FROM productos WHERE id=? And fecha=? PreparedStatement stmt= conn.prepareStatement(sql);

  • Capa Aplicacin Capa Aplicacin (PreparedStatement)(PreparedStatement)

    (continuacin ejemplo) sql = SELECT * FROM productos WHERE id=? And fecha=?

    Parmetro 1 : id Parmetro 2 : fecha

    Como se pasan los parmetros stmt.setInt(1,10); //Si quisiramos el producto 10 stmt.setDate(2,03/09/2001) //Los productos creados hoy.

    Otros tipo de datos (setXXX)

    Metodo Tipo dato SQL

    setBoolean Bit

    setDate Date

    setDouble Double

    setFloat Float

    setString String,Varchar

  • Capa AplicacinCapa Aplicacin

    CallableStatemet (Hereda de Statement) Es usada para ejecutar StoredProcedure. Proporciona mtodos para mapear los parmetros

    de salida del Stored Procedure Como se crea:

    CallableStatement cs = conn.prepareCall("{call}"); Donde , es el nombre del StoredProcedure

    Mtodos para mapear los parmetros cs.registerOutParameter (indiceParametro, tipodato);

    Ej.: cs.registerOutParameter( 1, java.sql.Date);

  • Capa AplicacinCapa Aplicacin

    ResultSet Tiene el mismo comportamiento de un cursor Define los mtodos, que permiten acceder al

    cursor generado como resultado de la ejecucin deun SELECT.

    El puntero esta ubicado antes de la primera fila. Para moverse entre filas se emplea

    ResultSet.next() Para obtener una columna especifica de la fila, se

    puede hacer invocando el mtodoResultSet.getXXX (xxx indica el tipo de datos)

  • Capa AplicacinCapa Aplicacin

    ResultSet (Continuacin) Ejemplo:

    String sql=select * from productos Statement stmt_ = conn.createStatemet(); ResultSet resultado_ = stmt_.executeQuery(sql); while(resultado_.next()){ System.out.println( id producto--> +resultado_.getInt(id)); System.out.println( producto--> +resultado_.getString(nombre)); }

    Tipo de metodos getXXX

    Metodo Tipo dato SQL

    getBoolean Bit

    getDate Date

    getDouble Double

    getFloat Float

    getString String,Varchar

  • Capa AplicacinCapa Aplicacin

    ResultSetMetaData Contiene informacin acerca de las propiedades de cada una

    de las columnas, que conforman el cursor/tabla, que fueobtenida en la ejecucin de una consulta.

    Como se crea: ResultSetMetaData rsmd = ResultSet.getMetaData(); Ejemplo (Tomando como base el slide anterior):

    ResultSet resultado = stmt.executeQuery(sql); ResultSetMetaData metaData_ = resultado.getMetaData();

    Numero de Columnas: int c