SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
JDBC
Introducción


Java proporciona conectividad a muchos tipos de base de datos a través de
 su API de Conectividad a Base de Datos Java ( Java Data Base Connectivity -
 JDBC)
Para desarrollar programas que interactuen con bases de datos en Java, se
 requiere esencialmente:
      Una base de datos relacional
      Una interfaz con Java (a través del API JDBC)
      Conocimiento básico de las sentencias SQL
Pasos Involucrados en el Acceso
                  a Bases de Datos


1. Se debe cargar en memoria el controlador (driver) que habilitará la
   conexión entre el programa Java y el sistema de base de datos

2. A través de este controlador, se establece una conexión a la base
   de datos

3. Una vez establecida la conexión, por medio de esta se ejecutan las
   sentencias SQL que sean requeridas

4. Al finalizar se debe cerrar todas las conexiones a bases de datos
   que estén activas
El API JDBC

• Algunas de las clases e interfaces de esta api son:
     – java.sql.DriverManager
     – java.sql.Driver
     – java.sql.Connection
     – java.sql.Statement
     – java.sql.ResultSet
     – java.sql.ResultSetMetaData
     – java.sql.DabataseMetaData
     – java.sql.PreparedStatement
     – java.sql.CallableStatement
Relación entre las Clases e
       Interfaces JDBC


                   utiliza       «interface»
 DriverManager                    Driver

           crea


    «interface»     genera       «interface»
   Connection                   Statement

  genera                                retorna

    «interface»                  «interface»
DatabaseMetaData                 ResultSet

                               genera

                                 «interface»
                             ResultSetMetaData
Tipos de Controladores JDBC


• JDBC provee cuatro tipos de controladores:
  - Controlador JDBC-ODBC (Tipo 1)
  - Controlador API-Nativo (Tipo 2)
  - Controlador de Protocolo de Red (Tipo 3)
  - Controlador Protocolo-Nativo (Tipo 4)
Cargar el Controlador

• Para cargar el controlador, se debe usar el método forName en la clase
  Class con el nombre del controlador como argumento
• Ejemplos del proceso de carga de un driver:
     - MS Access y MS SQL Server
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     - IBM UDB DB2
       Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
     - MySQL
       Class.forName("com.mysql.jdbc.Driver");
     - PostgreSQL
       Class.forName("org.postgresql.Driver");
Crear una Conexión


• La clase DriverManager es responsable por buscar las diferentes
  implementaciones JDBC que puedan existir en un sistema y administrar
  los controladores JDBC
• La    clase    DriverManager  provee    un    método     llamado
  getConnection(), por medio de este se puede obtener una conexión
  a una bases de datos
• Este método toma tres argumentos:
     – El URL de la base de datos
       protocol:<subprotocol>:<subname>
    – Identificación del usuario
    – Clave del usuario
Crear una Conexión
import java.sql.*;
public class PruebasJDBC {
    public static void main(java.lang.String[] args) {
        Connection conn = null;
        try {
            Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
            System.out.println("Driver cargado...");
            conn = DriverManager.getConnection(
                   "jdbc:db2:Sample", "db2admin",
                   "db2admin");
            System.out.println("Conexión establecida...");
        } catch (ClassNotFoundException e) {
            System.out.println("Driver no encontrado");
        } catch (SQLException e) {
            System.out.println("Error DB: " + e);
        } finally {
            try {
                if (conn != null) conn.close();
            } catch (SQLException se){}
        }
    }
}                                         Debemos realizar un
                                         manejo adecuado de
                                         las excepciones que
                                          pueden generarse
Crear Objetos Statement


• Las sentencias SQL más usadas son las siguientes:
     – UPDATE
     – INSERT
     – DELETE
     – SELECT
• La interfaz Statement provee métodos para hacer estas llamadas
• El método executeUpdate() retorna el numero de registros afectados
  por la sentencia SQL
• El método executeQuery() retorna el            conjunto   de   registros
  seleccionados por la consulta (ResultSet)
Crear Objetos Statement

import java.sql.*;
public class PruebasJDBC1 {
    public static void main(String[] args) {
        Connection conn = null;
        String u = "db2admin";
        String p = "db2admin";
        String drv = "COM.ibm.db2.jdbc.app.DB2Driver";
        try {
            Class.forName(drv);
            conn = DriverManager.getConnection(
           "jdbc:db2:IBM",u,p);
            Statement stmt = conn.createStatement();
            String sql = "INSERT INTO ESTUDIANTE "+
                         "VALUES('Pedro','Perez',123)";
            stmt.executeUpdate(sql);
            System.out.println("Actualización exitosa ");
        } catch (Exception e){
            System.out.println("Error: "+e);
        }finally {
            try {if (conn != null)conn.close();}
            catch (SQLException se){}
        }
    }
}
Usar ResultSet



• Al utilizar el método executeQuery() de un Statement, es necesario
  utilizar una referencia a la interfaz ResultSet para manipular los datos
  retornados por el Statement
• Para iterar a través de un ResultSet se utiliza el método next(), que
  permite mover el cursor desde su posición actual hasta el proximo registro
• Inicialmente el cursor del ResultSet se encuentra antes del primer
  registro
Usar ResultSet


• La interfaz ResultSet provee una serie de métodos que permiten extraer
  los datos contenidos en el registro apuntado por el cursor, entre estos se
  tienen:
     - int getInt(String);
       int getInt(int);
     - String getString(String);
       String getString(int);
     - float getFloat(String);
       float getFloat(int);
• Existe un par de métodos similares para cada tipo de dato compatible con
  SQL
Usar ResultSet

import java.sql.*;
public class PruebasJDBC2 {
    public static void main(String[] args) {
        ...
        try {
            ...
            Statement stmt = conn.createStatement();
            String sql = "SELECT * FROM ESTUDIANTE";
            ResultSet r = stmt.executeQuery(sql);
            while(r.next())
                System.out.println(r.getString("nombre")+
                                   " "+ r.getInt("ci"));
        } catch (Exception e){
            System.out.println("Error: "+e);
        }finally {
            try {if (conn != null)conn.close();}
            catch (SQLException se){}
        }
    }
}
Interfaces MetaData



• La palabra Metadata implica información acerca de información
• La interfaz ResultSetMetaData provee información acerca de los
  objetos ResultSet
• La clase DatabaseMetaData está relacionado con el objeto
  Connection. Por medio de esta se puede obtener información de la
  base de datos a la cual se está conectado por medio de Connection
ResultSetMetaData


• Algunos de los métodos contenidos en esta interfaz son los siguientes:

       - int getColumnCount()
       - String getColumnLabel(int column)
       - String getColumnName(int column)
       - String getTableName(int column)
       - int isNullable(int column)
       - boolean isReadOnly(int column)
DatabaseSetMetaData


• Alguno de los métodos contenidos en esta interfaz son los siguientes:

       - String getDriverName()
       - String getURL()
       - String getUserName()
       - boolean isReadOnly()
Extensiones de la Interfaz Statement



  • La especificación JDBC provee dos clases adicionales, provenientes de la
    interfaz Statement para permitir al programador realizar programación
    sofisticada de base de datos
  • Estas interfaces son:
       – PreparedStatement
       – CallableStatement
PreparedStatement


• Existe una manera de crear sentencias SQL una vez y usarla cada vez
  que quiera correrla
• Esto se logra a través de PreparedStatement de JDBC
• Esta interfaz permite construir las sentencias SQL requeridas una vez y
  ejecutarlas cualquier número de veces en la aplicación
• Cuando un objeto PreparedStatement es creado, la sentencia SQL se
  da como argumento
• La sentencia SQL debe ser enviada al DBMS inmediatamente donde es
  compilada una vez
PreparedStatement


• En tiempo de construcción el PreparedStatement no conoce los
  valores que determinan el resultado de su ejecución
• Solo las posiciones de dichos valores son conocidas en el momento de su
  creación, las mismas son indicadas con el símbolo “?”
      PreparedStatement ps;
      ps = conn.preparedStatement("select * from
              tabla "+ "where c1=? ")
PreparedStatement

import java.sql.*;
public class PruebasJDBCPrepared {
    static String db="jdbc:db2:IBM";
    static String drv="COM.ibm.db2.jdbc.app.DB2Driver";
    public static void main(String []args){
        Connection conn = null;
        PreparedStatement ps = null;
        try{
             Class.forName(drv);
             conn = DriverManager.
             getConnection(db,"db2admin","db2admin");
             String sql = "select * from estudiante where
                          ci=?";
             ps = conn.prepareCall(sql);
             ps.setInt(1,123);
             ResultSet rs = ps.executeQuery();
             //Continúa...
PreparedStatement


            if(rs.next())
               System.out.println("Encontrado");
            else
               System.out.println("No Encontrado");
        }catch(Exception e){
            System.out.println("Error: "+e);
        }finally{
            try{
                if(conn!=null)
                   conn.close();
            }catch(Exception e){}
        }
    }
}//Fin de la clase PruebasJDBCPrepared
Procedimientos Almacenados


• Un procedimiento almacenado (stored procedure) permite asociar un
  conjunto de sentencias SQL a un único nombre, para luego ejecutarlas
  haciendo uso de ese nombre en cualquier momento
• Los procedimientos almacenados son muy rápidos, ya que se ejecutan
  dentro de la base de datos y están previamente compilados
• Por medio de los objetos de la interfaz CallableStatement se pueden
  ejecutar dentro del código Java
Administración de Transacciones


• Una transacción puede ser definida como un conjunto de operaciones que
  deben ser ejecutadas como una unidad
• De fallar una de las operaciones, falla en su totalidad la transacción
• Una transacción es una “unidad de trabajo”
• Cuando se realiza cualquier operación de INSERT, UPDATE o DELETE ésta
  se ejecuta con auto-commit explícito por omisión
• Para habilitar control sobre las transacciones de la base de datos se usa el
  método setAutoCommit(boolean autoCommit)
Administración de Transacciones

  ...
  try{
      // Auto commit deshabilitado
      conn.setAutoCommit(false);
      // Insertamos en la primera tabla
      stmt = conn.createStatement();
      stmt.executeUpdate("INSERT INTO table1 ...");
      stmt.close();
      // Insertamos en la segunda tabla
      stmt = conn.createStatement();
      stmt.executeUpdate("INSERT INTO table2 ...");
      stmt.close();
      // Compromete los cambios en la base de datos
          conn.commit();
  }catch(SQLException e){
      try {
          conn.rollback();
      }catch( SQLException sqle2 ){}
  }...
Soporte de Cursores


• JDBC provee soporte limitado de cursores.
• Permite a una aplicación obtener un cursor asociado con el resultado a
  través del método de ResultSet.getCursorName()
• El desplazamiento dentro del cursor es provisto recientemente en las
  implementaciones de JDBC, algunos controladores pueden no permitirlo
• Para hacer uso de cursores desplazables se debe activar esta
  característica
Soporte de Cursores

Uso típico de cursores:
  stmt = conn.createStatement(
      ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
  rs = stmt.executeQuery("SELECT * FROM tableName”);
  rs.absolute(7);
  System.out.println(rs.getString(1));
  while (rs.next(){
            // ...
  }
  rs.beforeFirst();
  while (rs.next()) {
        // ...
  }
Múltiples Resultados

• Especialmente con procedimientos almacenados, se puede estar interesados
  en una aplicación que retorne múltiples resultados
• Para obtenerlos, se debe hacer uso de los siguientes métodos:
     boolean getMoreResults();
     ResulSet getResultSet();
Múltiples Resultados


• Un uso típico de esta característica es el siguiente:
         ...
     while(stmt.getMoreResults()) {
          rs = stmt.getResultSet();
          while (rs.next()) {
                // algunas tareas
           }
     }
         ...
Clases de Soporte JDBC


• Algunas de las clases de soporte son las siguientes:
     SQLException
     SQLWarning
     DataTruncation
     Date, Time y Timestamp
     Types
Resumen


• Se entendió como usar clases heredadas de Statement
• Se aprendió acerca de procedimientos almacenados
• Se discutió acerca de otras funcionalidades JDBC:
     - como administración de transacciones,
     - soporte de cursores y
     - procesamiento de resultados múltiples.
• Se listaron algunas de las clases de soporte JDBC en Java

Más contenido relacionado

La actualidad más candente

LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.SILVA19_PAMELA
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence APIJose Martinez
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Ronald Cuello
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)José Toro
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)José Toro
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jqueryPablo Galeana Bailey
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)José Toro
 

La actualidad más candente (20)

Java con-base-datos
Java con-base-datosJava con-base-datos
Java con-base-datos
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.
 
Objeto Sql Command
Objeto Sql CommandObjeto Sql Command
Objeto Sql Command
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Vistas
VistasVistas
Vistas
 
Tema 6
Tema 6Tema 6
Tema 6
 
Jdbc
JdbcJdbc
Jdbc
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
Objeto sqlcommand
Objeto sqlcommandObjeto sqlcommand
Objeto sqlcommand
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Sql connection
Sql connectionSql connection
Sql connection
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Statement
StatementStatement
Statement
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
JDBC
JDBCJDBC
JDBC
 

Destacado

Shalom
ShalomShalom
ShalomGINA23
 
Intermedio1_revolucion
Intermedio1_revolucionIntermedio1_revolucion
Intermedio1_revolucionLenin Arellano
 
Ftp y nombre de dominio
Ftp y nombre de dominioFtp y nombre de dominio
Ftp y nombre de dominiopaz
 
Journée mondiale de l’alimentation juin 2014
Journée mondiale de l’alimentation juin 2014Journée mondiale de l’alimentation juin 2014
Journée mondiale de l’alimentation juin 2014beajor
 
Projet de reconversion du couvent sainte marie-des-anges en résidentiel
Projet de reconversion du couvent sainte marie-des-anges en résidentielProjet de reconversion du couvent sainte marie-des-anges en résidentiel
Projet de reconversion du couvent sainte marie-des-anges en résidentielYves Doyon
 
Proyecto de vida mafe
Proyecto de vida mafeProyecto de vida mafe
Proyecto de vida mafeAlex Granda
 
#Apprentissage : le Medef tire la sonette d'alarme
#Apprentissage : le Medef tire la sonette d'alarme#Apprentissage : le Medef tire la sonette d'alarme
#Apprentissage : le Medef tire la sonette d'alarmeArnaud Delaunay
 
Café vie-privée jdll2015-atelier_gpg
Café vie-privée jdll2015-atelier_gpgCafé vie-privée jdll2015-atelier_gpg
Café vie-privée jdll2015-atelier_gpgWagabow
 
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperis
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\NacionsiimperisG:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperis
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperisapalamoncusi
 
Condiciones del servicio de google chrome
Condiciones del servicio de google chromeCondiciones del servicio de google chrome
Condiciones del servicio de google chromeMABLACKCRUICE
 
Premolar con erupcion ectopica parte II
Premolar con erupcion ectopica parte IIPremolar con erupcion ectopica parte II
Premolar con erupcion ectopica parte IIJuan Tipismana
 
1 Presentacion Carlos yanez
1  Presentacion Carlos yanez1  Presentacion Carlos yanez
1 Presentacion Carlos yanezcarlos
 
Taller 1, 2010
Taller 1, 2010Taller 1, 2010
Taller 1, 2010Lakxmy
 
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...Agroécologie Suisse
 
Ventajas economicas de la recogida selectiva puerta a puerta
Ventajas economicas de la recogida selectiva puerta a puertaVentajas economicas de la recogida selectiva puerta a puerta
Ventajas economicas de la recogida selectiva puerta a puertasanmarko
 

Destacado (20)

Golazo
GolazoGolazo
Golazo
 
Shalom
ShalomShalom
Shalom
 
Intermedio1_revolucion
Intermedio1_revolucionIntermedio1_revolucion
Intermedio1_revolucion
 
Ftp y nombre de dominio
Ftp y nombre de dominioFtp y nombre de dominio
Ftp y nombre de dominio
 
Fatla mariadib importancia bloque academico
Fatla mariadib importancia bloque academicoFatla mariadib importancia bloque academico
Fatla mariadib importancia bloque academico
 
Journée mondiale de l’alimentation juin 2014
Journée mondiale de l’alimentation juin 2014Journée mondiale de l’alimentation juin 2014
Journée mondiale de l’alimentation juin 2014
 
Projet de reconversion du couvent sainte marie-des-anges en résidentiel
Projet de reconversion du couvent sainte marie-des-anges en résidentielProjet de reconversion du couvent sainte marie-des-anges en résidentiel
Projet de reconversion du couvent sainte marie-des-anges en résidentiel
 
Proyecto de vida mafe
Proyecto de vida mafeProyecto de vida mafe
Proyecto de vida mafe
 
Fundamentos de Administración
Fundamentos de AdministraciónFundamentos de Administración
Fundamentos de Administración
 
Pub
PubPub
Pub
 
#Apprentissage : le Medef tire la sonette d'alarme
#Apprentissage : le Medef tire la sonette d'alarme#Apprentissage : le Medef tire la sonette d'alarme
#Apprentissage : le Medef tire la sonette d'alarme
 
Café vie-privée jdll2015-atelier_gpg
Café vie-privée jdll2015-atelier_gpgCafé vie-privée jdll2015-atelier_gpg
Café vie-privée jdll2015-atelier_gpg
 
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperis
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\NacionsiimperisG:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperis
G:\Ies Ferrer I GuàRdia (2)\Socials 4 T\Nacionsiimperis
 
Condiciones del servicio de google chrome
Condiciones del servicio de google chromeCondiciones del servicio de google chrome
Condiciones del servicio de google chrome
 
Premolar con erupcion ectopica parte II
Premolar con erupcion ectopica parte IIPremolar con erupcion ectopica parte II
Premolar con erupcion ectopica parte II
 
1 Presentacion Carlos yanez
1  Presentacion Carlos yanez1  Presentacion Carlos yanez
1 Presentacion Carlos yanez
 
Taller 1, 2010
Taller 1, 2010Taller 1, 2010
Taller 1, 2010
 
La amistad trabajo
La amistad trabajoLa amistad trabajo
La amistad trabajo
 
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...
Agriculteurs suisses et production alimentaire durable: ambiguïtés, tensions ...
 
Ventajas economicas de la recogida selectiva puerta a puerta
Ventajas economicas de la recogida selectiva puerta a puertaVentajas economicas de la recogida selectiva puerta a puerta
Ventajas economicas de la recogida selectiva puerta a puerta
 

Similar a Lpiii tema5 - jdbc

109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-javaMiguel Ángel
 
Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfGregorioSnchez7
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCCarlos Hernando
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006Samuel Marrero
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javadevsco63
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Conexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansConexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansjbersosa
 
Java Y Oracle
Java Y OracleJava Y Oracle
Java Y Oracleplsqlags
 

Similar a Lpiii tema5 - jdbc (20)

109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java109545688 conexion-de-sql-a-java
109545688 conexion-de-sql-a-java
 
S8-POO-4.2 BDD
S8-POO-4.2 BDDS8-POO-4.2 BDD
S8-POO-4.2 BDD
 
Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdf
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
S8-BDD
S8-BDDS8-BDD
S8-BDD
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Connection
ConnectionConnection
Connection
 
Notas clase
Notas claseNotas clase
Notas clase
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
Notas clase
Notas claseNotas clase
Notas clase
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
JDBC
JDBCJDBC
JDBC
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Jdbc
JdbcJdbc
Jdbc
 
Conexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansConexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeans
 
Java Y Oracle
Java Y OracleJava Y Oracle
Java Y Oracle
 
Java Y Oracle
Java Y OracleJava Y Oracle
Java Y Oracle
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 

Más de kjrojas

LibreOffice
LibreOfficeLibreOffice
LibreOfficekjrojas
 
Presentacion flisolabril2011def
Presentacion flisolabril2011defPresentacion flisolabril2011def
Presentacion flisolabril2011defkjrojas
 
Interrupcion Yconflictodel Hardware
Interrupcion Yconflictodel HardwareInterrupcion Yconflictodel Hardware
Interrupcion Yconflictodel Hardwarekjrojas
 
Lpiii tema1- fundamentos de java
Lpiii tema1- fundamentos de javaLpiii tema1- fundamentos de java
Lpiii tema1- fundamentos de javakjrojas
 
Taller redes
Taller redesTaller redes
Taller redeskjrojas
 
Taller redes
Taller redesTaller redes
Taller redeskjrojas
 

Más de kjrojas (6)

LibreOffice
LibreOfficeLibreOffice
LibreOffice
 
Presentacion flisolabril2011def
Presentacion flisolabril2011defPresentacion flisolabril2011def
Presentacion flisolabril2011def
 
Interrupcion Yconflictodel Hardware
Interrupcion Yconflictodel HardwareInterrupcion Yconflictodel Hardware
Interrupcion Yconflictodel Hardware
 
Lpiii tema1- fundamentos de java
Lpiii tema1- fundamentos de javaLpiii tema1- fundamentos de java
Lpiii tema1- fundamentos de java
 
Taller redes
Taller redesTaller redes
Taller redes
 
Taller redes
Taller redesTaller redes
Taller redes
 

Último

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 

Último (20)

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 

Lpiii tema5 - jdbc

  • 2. Introducción Java proporciona conectividad a muchos tipos de base de datos a través de su API de Conectividad a Base de Datos Java ( Java Data Base Connectivity - JDBC) Para desarrollar programas que interactuen con bases de datos en Java, se requiere esencialmente:  Una base de datos relacional  Una interfaz con Java (a través del API JDBC)  Conocimiento básico de las sentencias SQL
  • 3. Pasos Involucrados en el Acceso a Bases de Datos 1. Se debe cargar en memoria el controlador (driver) que habilitará la conexión entre el programa Java y el sistema de base de datos 2. A través de este controlador, se establece una conexión a la base de datos 3. Una vez establecida la conexión, por medio de esta se ejecutan las sentencias SQL que sean requeridas 4. Al finalizar se debe cerrar todas las conexiones a bases de datos que estén activas
  • 4. El API JDBC • Algunas de las clases e interfaces de esta api son: – java.sql.DriverManager – java.sql.Driver – java.sql.Connection – java.sql.Statement – java.sql.ResultSet – java.sql.ResultSetMetaData – java.sql.DabataseMetaData – java.sql.PreparedStatement – java.sql.CallableStatement
  • 5. Relación entre las Clases e Interfaces JDBC utiliza «interface» DriverManager Driver crea «interface» genera «interface» Connection Statement genera retorna «interface» «interface» DatabaseMetaData ResultSet genera «interface» ResultSetMetaData
  • 6. Tipos de Controladores JDBC • JDBC provee cuatro tipos de controladores: - Controlador JDBC-ODBC (Tipo 1) - Controlador API-Nativo (Tipo 2) - Controlador de Protocolo de Red (Tipo 3) - Controlador Protocolo-Nativo (Tipo 4)
  • 7. Cargar el Controlador • Para cargar el controlador, se debe usar el método forName en la clase Class con el nombre del controlador como argumento • Ejemplos del proceso de carga de un driver: - MS Access y MS SQL Server Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - IBM UDB DB2 Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); - MySQL Class.forName("com.mysql.jdbc.Driver"); - PostgreSQL Class.forName("org.postgresql.Driver");
  • 8. Crear una Conexión • La clase DriverManager es responsable por buscar las diferentes implementaciones JDBC que puedan existir en un sistema y administrar los controladores JDBC • La clase DriverManager provee un método llamado getConnection(), por medio de este se puede obtener una conexión a una bases de datos • Este método toma tres argumentos: – El URL de la base de datos protocol:<subprotocol>:<subname> – Identificación del usuario – Clave del usuario
  • 9. Crear una Conexión import java.sql.*; public class PruebasJDBC { public static void main(java.lang.String[] args) { Connection conn = null; try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); System.out.println("Driver cargado..."); conn = DriverManager.getConnection( "jdbc:db2:Sample", "db2admin", "db2admin"); System.out.println("Conexión establecida..."); } catch (ClassNotFoundException e) { System.out.println("Driver no encontrado"); } catch (SQLException e) { System.out.println("Error DB: " + e); } finally { try { if (conn != null) conn.close(); } catch (SQLException se){} } } } Debemos realizar un manejo adecuado de las excepciones que pueden generarse
  • 10. Crear Objetos Statement • Las sentencias SQL más usadas son las siguientes: – UPDATE – INSERT – DELETE – SELECT • La interfaz Statement provee métodos para hacer estas llamadas • El método executeUpdate() retorna el numero de registros afectados por la sentencia SQL • El método executeQuery() retorna el conjunto de registros seleccionados por la consulta (ResultSet)
  • 11. Crear Objetos Statement import java.sql.*; public class PruebasJDBC1 { public static void main(String[] args) { Connection conn = null; String u = "db2admin"; String p = "db2admin"; String drv = "COM.ibm.db2.jdbc.app.DB2Driver"; try { Class.forName(drv); conn = DriverManager.getConnection( "jdbc:db2:IBM",u,p); Statement stmt = conn.createStatement(); String sql = "INSERT INTO ESTUDIANTE "+ "VALUES('Pedro','Perez',123)"; stmt.executeUpdate(sql); System.out.println("Actualización exitosa "); } catch (Exception e){ System.out.println("Error: "+e); }finally { try {if (conn != null)conn.close();} catch (SQLException se){} } } }
  • 12. Usar ResultSet • Al utilizar el método executeQuery() de un Statement, es necesario utilizar una referencia a la interfaz ResultSet para manipular los datos retornados por el Statement • Para iterar a través de un ResultSet se utiliza el método next(), que permite mover el cursor desde su posición actual hasta el proximo registro • Inicialmente el cursor del ResultSet se encuentra antes del primer registro
  • 13. Usar ResultSet • La interfaz ResultSet provee una serie de métodos que permiten extraer los datos contenidos en el registro apuntado por el cursor, entre estos se tienen: - int getInt(String); int getInt(int); - String getString(String); String getString(int); - float getFloat(String); float getFloat(int); • Existe un par de métodos similares para cada tipo de dato compatible con SQL
  • 14. Usar ResultSet import java.sql.*; public class PruebasJDBC2 { public static void main(String[] args) { ... try { ... Statement stmt = conn.createStatement(); String sql = "SELECT * FROM ESTUDIANTE"; ResultSet r = stmt.executeQuery(sql); while(r.next()) System.out.println(r.getString("nombre")+ " "+ r.getInt("ci")); } catch (Exception e){ System.out.println("Error: "+e); }finally { try {if (conn != null)conn.close();} catch (SQLException se){} } } }
  • 15. Interfaces MetaData • La palabra Metadata implica información acerca de información • La interfaz ResultSetMetaData provee información acerca de los objetos ResultSet • La clase DatabaseMetaData está relacionado con el objeto Connection. Por medio de esta se puede obtener información de la base de datos a la cual se está conectado por medio de Connection
  • 16. ResultSetMetaData • Algunos de los métodos contenidos en esta interfaz son los siguientes: - int getColumnCount() - String getColumnLabel(int column) - String getColumnName(int column) - String getTableName(int column) - int isNullable(int column) - boolean isReadOnly(int column)
  • 17. DatabaseSetMetaData • Alguno de los métodos contenidos en esta interfaz son los siguientes: - String getDriverName() - String getURL() - String getUserName() - boolean isReadOnly()
  • 18. Extensiones de la Interfaz Statement • La especificación JDBC provee dos clases adicionales, provenientes de la interfaz Statement para permitir al programador realizar programación sofisticada de base de datos • Estas interfaces son: – PreparedStatement – CallableStatement
  • 19. PreparedStatement • Existe una manera de crear sentencias SQL una vez y usarla cada vez que quiera correrla • Esto se logra a través de PreparedStatement de JDBC • Esta interfaz permite construir las sentencias SQL requeridas una vez y ejecutarlas cualquier número de veces en la aplicación • Cuando un objeto PreparedStatement es creado, la sentencia SQL se da como argumento • La sentencia SQL debe ser enviada al DBMS inmediatamente donde es compilada una vez
  • 20. PreparedStatement • En tiempo de construcción el PreparedStatement no conoce los valores que determinan el resultado de su ejecución • Solo las posiciones de dichos valores son conocidas en el momento de su creación, las mismas son indicadas con el símbolo “?” PreparedStatement ps; ps = conn.preparedStatement("select * from tabla "+ "where c1=? ")
  • 21. PreparedStatement import java.sql.*; public class PruebasJDBCPrepared { static String db="jdbc:db2:IBM"; static String drv="COM.ibm.db2.jdbc.app.DB2Driver"; public static void main(String []args){ Connection conn = null; PreparedStatement ps = null; try{ Class.forName(drv); conn = DriverManager. getConnection(db,"db2admin","db2admin"); String sql = "select * from estudiante where ci=?"; ps = conn.prepareCall(sql); ps.setInt(1,123); ResultSet rs = ps.executeQuery(); //Continúa...
  • 22. PreparedStatement if(rs.next()) System.out.println("Encontrado"); else System.out.println("No Encontrado"); }catch(Exception e){ System.out.println("Error: "+e); }finally{ try{ if(conn!=null) conn.close(); }catch(Exception e){} } } }//Fin de la clase PruebasJDBCPrepared
  • 23. Procedimientos Almacenados • Un procedimiento almacenado (stored procedure) permite asociar un conjunto de sentencias SQL a un único nombre, para luego ejecutarlas haciendo uso de ese nombre en cualquier momento • Los procedimientos almacenados son muy rápidos, ya que se ejecutan dentro de la base de datos y están previamente compilados • Por medio de los objetos de la interfaz CallableStatement se pueden ejecutar dentro del código Java
  • 24. Administración de Transacciones • Una transacción puede ser definida como un conjunto de operaciones que deben ser ejecutadas como una unidad • De fallar una de las operaciones, falla en su totalidad la transacción • Una transacción es una “unidad de trabajo” • Cuando se realiza cualquier operación de INSERT, UPDATE o DELETE ésta se ejecuta con auto-commit explícito por omisión • Para habilitar control sobre las transacciones de la base de datos se usa el método setAutoCommit(boolean autoCommit)
  • 25. Administración de Transacciones ... try{ // Auto commit deshabilitado conn.setAutoCommit(false); // Insertamos en la primera tabla stmt = conn.createStatement(); stmt.executeUpdate("INSERT INTO table1 ..."); stmt.close(); // Insertamos en la segunda tabla stmt = conn.createStatement(); stmt.executeUpdate("INSERT INTO table2 ..."); stmt.close(); // Compromete los cambios en la base de datos conn.commit(); }catch(SQLException e){ try { conn.rollback(); }catch( SQLException sqle2 ){} }...
  • 26. Soporte de Cursores • JDBC provee soporte limitado de cursores. • Permite a una aplicación obtener un cursor asociado con el resultado a través del método de ResultSet.getCursorName() • El desplazamiento dentro del cursor es provisto recientemente en las implementaciones de JDBC, algunos controladores pueden no permitirlo • Para hacer uso de cursores desplazables se debe activar esta característica
  • 27. Soporte de Cursores Uso típico de cursores: stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = stmt.executeQuery("SELECT * FROM tableName”); rs.absolute(7); System.out.println(rs.getString(1)); while (rs.next(){ // ... } rs.beforeFirst(); while (rs.next()) { // ... }
  • 28. Múltiples Resultados • Especialmente con procedimientos almacenados, se puede estar interesados en una aplicación que retorne múltiples resultados • Para obtenerlos, se debe hacer uso de los siguientes métodos: boolean getMoreResults(); ResulSet getResultSet();
  • 29. Múltiples Resultados • Un uso típico de esta característica es el siguiente: ... while(stmt.getMoreResults()) { rs = stmt.getResultSet(); while (rs.next()) { // algunas tareas } } ...
  • 30. Clases de Soporte JDBC • Algunas de las clases de soporte son las siguientes:  SQLException  SQLWarning  DataTruncation  Date, Time y Timestamp  Types
  • 31. Resumen • Se entendió como usar clases heredadas de Statement • Se aprendió acerca de procedimientos almacenados • Se discutió acerca de otras funcionalidades JDBC: - como administración de transacciones, - soporte de cursores y - procesamiento de resultados múltiples. • Se listaron algunas de las clases de soporte JDBC en Java