SESION 01 - LP I

11
Lenguaje de Programación I PROFESOR: Ricardo Coello Palomino 1 Semana Pág. 1 PRIMERA UNIDAD DIDÁCTICA TECNOLOGÍA JDBC APLICADO A LA INTERFASE SWING I INTRODUCCION Y ORIENTACION PARA EL ESTUDIO Amigo participante: Acabas de emprender el estudio que te permitirá conocer y aplicar la tecnología JDBC con la finalidad de construir aplicaciones Java con conexión a base de datos, con posibilidad de realizar mantenimiento y manejo de los datos. Se le invita a tomar los valiosos conocimientos de esta separata siguiendo detalladamente la metodología planteada: Lea analíticamente el contenido de esta unidad, aplique los ejercicios propuestos, y finalmente realice las actividades propuestas, si tuviera dudas sobre algún aspecto, no dude en consultar con su profesor de la asignatura. Cada tema cuenta con el objetivo que se desea lograr, su respectivo resumen, desarrollo y las actividades domiciliarias que debe desarrollarse para fortalecer el conocimiento, su glosario de términos que pudiera desconocer y algunos anexos para ampliar su conocimiento. II DESARROLLO DE LOS CONTENIDOS TEMA1: INTRODUCCION A LA TECNOLOGIA JDBC LOGROS El participante logrará comprender el funcionamiento y la importancia de la tecnología JDBC y de sus diversos componentes, así como también sus interacciones de esta tecnología con los diferentes orígenes de datos. El participante aprenda a manejar las distintas interfaces y clases contenidas en el JDBC de Java con el propósito de establecer una conexión, ejecutar comandos SQL y manejar un esquema de datos. RESUMEN La tecnología JDBC es un conjunto de clases e interfaces, escritos en código 100% Java que permiten la conexión y el manejo de los datos de una base de datos. La tecnología JDBC utiliza un Driver provisto por el fabricante que permite la conexión entre la aplicación y la base de datos. JDBC contiene una variedad amplia de clases e interfaces para el manejo de datos, entre las que resalta por su importancia las siguientes: Connection (permite abrir, controlar y cerrar la conexión con una base de datos), Statement (permite ejecutar los comandos SQL para insertar, modificar, borrar y crear esquemas de datos), ResultSet (Maneja un esquema de datos), DriverManager (Maneja los drivers de conexión).

description

Lenguaje Programación i

Transcript of SESION 01 - LP I

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 1

    PRIMERA UNIDAD DIDCTICA

    TECNOLOGA JDBC APLICADO A LA INTERFASE SWING

    I INTRODUCCION Y ORIENTACION PARA EL ESTUDIO

    Amigo participante:

    Acabas de emprender el estudio que te permitir conocer y aplicar la tecnologa JDBC con la finalidad de

    construir aplicaciones Java con conexin a base de datos, con posibilidad de realizar mantenimiento y

    manejo de los datos.

    Se le invita a tomar los valiosos conocimientos de esta separata siguiendo detalladamente la metodologa

    planteada: Lea analticamente el contenido de esta unidad, aplique los ejercicios propuestos, y finalmente

    realice las actividades propuestas, si tuviera dudas sobre algn aspecto, no dude en consultar con su

    profesor de la asignatura.

    Cada tema cuenta con el objetivo que se desea lograr, su respectivo resumen, desarrollo y las actividades

    domiciliarias que debe desarrollarse para fortalecer el conocimiento, su glosario de trminos que pudiera

    desconocer y algunos anexos para ampliar su conocimiento.

    II DESARROLLO DE LOS CONTENIDOS

    TEMA1: INTRODUCCION A LA TECNOLOGIA JDBC

    LOGROS

    El participante lograr comprender el funcionamiento y la importancia de la tecnologa JDBC y de

    sus diversos componentes, as como tambin sus interacciones de esta tecnologa con los diferentes

    orgenes de datos.

    El participante aprenda a manejar las distintas interfaces y clases contenidas en el JDBC de Java con el

    propsito de establecer una conexin, ejecutar comandos SQL y manejar un esquema de datos.

    RESUMEN

    La tecnologa JDBC es un conjunto de clases e interfaces, escritos en cdigo 100% Java que permiten la

    conexin y el manejo de los datos de una base de datos. La tecnologa JDBC utiliza un Driver provisto por

    el fabricante que permite la conexin entre la aplicacin y la base de datos.

    JDBC contiene una variedad amplia de clases e interfaces para el manejo de datos, entre las que resalta por

    su importancia las siguientes: Connection (permite abrir, controlar y cerrar la conexin con una base de

    datos), Statement (permite ejecutar los comandos SQL para insertar, modificar, borrar y crear esquemas de

    datos), ResultSet (Maneja un esquema de datos), DriverManager (Maneja los drivers de conexin).

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 2

    DESARROLLO

    INTRODUCCIN

    Java Database Connectivity (JDBC) es una interface de acceso a bases de datos estndar SQL que

    proporciona un acceso uniforme a una gran variedad de bases de datos relacionales. JDBC tambin

    proporciona una base comn para la construccin de herramientas y utilidades de alto nivel.

    El paquete actual de JDK incluye JDBC y el puente JDBC-ODBC. Estos paquetes son para su uso

    con JDK 1.x.

    DEFINICION DEL JDBC

    JDBC es el API para la ejecucin de sentencias SQL. (Como punto de inters JDBC es una marca registrada

    y no un acrnimo, no obstante a menudo es conocido como Java Database Connectivity). Consiste en un

    conjunto de clases e interfaces escritas en el lenguaje de programacin Java. JDBC suministra un API

    estndar para los desarrolladores y hace posible escribir aplicaciones de base de datos usando un API puro

    Java.

    Usando JDBC es fcil enviar sentencias SQL virtualmente a cualquier sistema de base de datos. En otras

    palabras, con el API JDBC, no es necesario escribir un programa que acceda a una base de datos Sybase,

    otro para acceder a Oracle y otro para acceder a Informix. Un nico programa escrito usando el API JDBC y

    el programa ser capaz de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicacin escrita

    en el lenguaje de programacin Java, tampoco es necesario escribir diferentes aplicaciones para ejecutar en

    diferentes plataformas. La combinacin de Java y JDBC permite al programador escribir una sola vez y

    ejecutarlo en cualquier entorno.

    Java, siendo robusto, seguro, fcil de usar, fcil de entender, y descargable automticamente desde la red,

    es un lenguaje base excelente para aplicaciones de base de datos.

    FUNCIONES DEL JDBC

    1. Establecer una conexin con una base de datos

    2. Enviar una consulta SQL a la base de datos

    3. Procesar los resultados de la consulta.

    El API JDBC del desarrollador de aplicaciones consta de dos partes, por un lado est el paquete java.sql,

    que contiene las clases e interfaces que permiten acceder a la funcionalidad bsica del API JDBC. Este

    paquete forma parte de la edicin estndar de la plataforma Java (J2SE), desde la versin 1.1 de sta. Esta

    separata se centra en la funcionalidad de este paquete.

    CARACTERSTICAS Y DRIVERS DEL JDBC

    Los Driver, tambin llamados Manejadores, son un conjunto de clases que implementan las clases e

    interfaces del API JDBC necesarias para que una aplicacin Java pueda conectarse con una BD. Cuando

    los desarrolladores de una BD desean que esta pueda ser accesible mediante JDBC stos deben

    implementar un manejador para esa base de datos; la misin del manejador ser traducir comandos estndar

    del API JDBC al protocolo nativo de esa base de datos.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 3

    Cada base de datos emplea un protocolo diferente de comunicacin, protocolos que normalmente son

    propietarios. El uso de un manejador, una capa intermedia entre el cdigo del desarrollador y la base de

    datos, permite independizar el cdigo Java que accede a la BD del sistema de BD concreto a la que estamos

    accediendo, ya que en nuestro cdigo Java emplearemos comandos estndar, y estos comandos sern

    traducidos por el manejador a comandos propietarios de cada sistema de BD concreto.

    Si queremos cambiar el sistema de BD que empleamos lo nico que deberemos hacer es reemplazar el

    antiguo manejador por el nuevo, y seremos capaces de conectarnos la nueva BD.

    Para garantizar que un manejador respeta el API JDBC existe un conjunto de pruebas que debe pasar el

    manejador para poderse considerar JDBC CompliantTM, estas pruebas (disponibles en

    http://java.sun.com/products/jdbc/download.html) nos garantizan que un manejador ha sido desarrollado

    siguiendo el API JDBC.

    En http://servlet.java.sun.com/products/jdbc/drivers se puede encontrar manejadores para cualquier base de

    datos.

    Tipos de manejadores:

    Hay 4 tipos de manejadores JDBC, que difieren en s, usan o no tecnologa Java Pura, en su rendimiento y

    en la flexibilidad para cambiar de base de datos. Veamos cuales son:

    a. Puente JDBC-ODBC (tipo1)

    ODBC es un API estndar semejante a JDBC, que permite que lenguajes como C++ accedan de un modo

    estndar a distintos sistemas de BD. Un manejador tipo puente JDBC-ODBC delega todo el trabajo sobre un

    manejador ODBC, que es quien realmente se comunica con la BD. El puente JDBC-ODBC permite la

    conexin desde Java a BD que no proveen manejadores JDBC. Fue muy til cuando se cre el API JDBC,

    ya que muchas BD no disponan de manejadores JDBC, pero s de manejadores ODBC. Empleado el puente

    JDBC-ODBC poda accederse a estas bases de datos empleando el API JDBC.

    Este tipo de manejador tiene dos desventajas: por un lado depende de cdigo nativo, ya que el manejador

    ODBC no ha sido desarrollado en Java. Esto compromete la portabilidad de nuestro desarrollo. Por otro lado

    al emplear este tipo de manejador nuestra aplicacin llama al gestor de manejadores JDBC, quien a su vez

    llama al manejador JDBC (puente JDBC-ODBC), quien llama al manejador ODBC, que es el que finalmente

    llama a la base de datos. Hay muchos puntos donde potencialmente puede producirse un fallo, lo cual hace

    que estos manejadores muchas veces sean bastante inestables.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 4

    El puente forma parte del jdk de SUN, est en el paquete sun.jdbc.odbc. Inicialmente este tipo de manejador

    fue bastante til por aliviar la carencia de manejadores JDBC.

    Hoy en da es el menos recomendado por limitar la portabilidad de la aplicacin, al requerir cdigo nativo, y

    por emplear tantas capas para la comunicacin con la base de datos, lo que a veces hace que incrementa

    la inestabilidad de estos manejadores.

    b. Manejador de API nativo (tipo2)

    Se basa en una librera escrita en cdigo nativo para acceder a la base de datos. El manejador traduce las

    llamadas JDBC a llamadas al cdigo de la librera nativa, siendo el cdigo nativo el que se comunica con las

    bases de datos. La librera nativa es proporcionada por los desarrolladores de la BD.

    Estos manejadores son ms eficientes y tienen menos puntos de fallo que el puente JDBC-ODBC ya que

    hay menos capas entre el cdigo de la aplicacin y la base de datos. Sin embargo siguen teniendo el

    problema de prdida de portabilidad por emplear cdigo nativo.

    c. Manejador de JDBC-Net (tipo3)

    El manejador se comunica con un servidor intermedio que se encuentra entre el cliente y la base de datos.

    El servidor intermediario se encarga de traducir las al API JDBC al protocolo especfico de la base de datos.

    No se requiere ningn tipo de cdigo nativo en el cliente, por lo que la portabilidad de la aplicacin est

    garantizada: el manejador es tecnologa 100% Java.. Adems si el intermediario es capaz de traducir las

    llamadas JDBC a protocolos especficos de diferentes sistemas de BD podremos emplear un mismo

    manejador para comunicarnos con diferentes bases de datos. Esto lo convierte en el manejador ms flexible

    de todos. No obstante se trata de un driver complejo, ya que requiere la presencia de un midelware, una

    capa intermedia entre el cliente y la base de datos, por lo que no es muy comn emplearlo en arquitecturas

    simples, sino ms bien en arquitecturas sofisticadas donde muchas veces entran en juego varias bases de

    datos distintas. API JDBC

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 5

    d. Manejador de Protocolo Nativo (tipo4)

    El manejador traduce directamente las llamadas al API JDBC al protocolo nativo de la base de datos. Es el manejador

    que tiene mejor rendimiento, pero est ms ligado a la base de datos que empleemos que el manejador tipo JDBC-Net,

    donde el uso del servidor intermedio nos da una gran flexibilidad a la hora de cambiar de base de datos. Este tipo de

    manejadores tambin emplea tecnologa 100% Java.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 6

    LAS INTERFACES Y CLASES DEL JDBC

    JDBC incluye un conjunto de interfaces y clases de que permiten el manejo de base de datos en Java, esta

    tecnologa est basada fundamentalmente en las siguientes interfaces:

    a. Driver

    b. DriverManager

    c. Connection

    d. Statement

    e. PreparedStatement

    f. CallableStatement

    g. ResultSet

    REGISTRO DE UN MANEJADOR

    Registrar un manejador no es ms que cargar en memoria una clase que implementa el interfaz Driver, clase

    proporcionada por los desarrolladores de la base de datos. Existen tres formas de registrar un Driver:

    1. Empleando el cargador de clases. Para ello empleamos, al igual que para cargar cualquier otra clase, el

    mtodo forName(String clase) de la clase Class.

    Class.forName("com.mysql.Driver");

    2. Instanciando la clase que implementa el interfaz Driver. De este modo tendremos una referencia al Driver,

    pudiendo establecer la conexin directamente con l sin necesidad de emplear la clase DriverManager.

    La sintaxis es la misma que para instanciar cualquier otra clase:

    Driver driverPraMySQL = new org.gjt.mm.mysql.Driver();

    3. Definir la propiedad jdbc.drivers. Podemos hacerlo de dos modos diferentes:

    a. Definiendo la propiedad jdbc.drivers en nuestra mquina virtual. La sintaxis es

    jdbc.drivers=nombreManejador1: nombreManejador2:

    jdbc.drivers=gjt.mm.mysql.Driver:oracle.jdbc.driver.OracleDriver;

    b. Emplear la opcin D al invocar a la mquina virtual. Para ellos debemos arrancar nuestra aplicacin

    con el comando java: -

    Djdbc.drivers= nombreManejador1: nombreManejador2:

    java -Djdbc.drivers=gjt.mm.mysql.Driver:oracle.jdbc.driver.OracleDriver;

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 7

    INTERFAZ DRIVER

    Aunque es vital para establecer la conexin con la base de datos en la prctica el desarrollador de

    aplicaciones puede olvidarse de esta interfaz. Es responsabilidad del desarrollador del manejador proveer

    una clase que la implemente esta interfaz, y ser responsabilidad del DriverManager llamar al mtodo

    connect de los drivers registrados para intentar establecer la conexin con la base de datos.

    No obstante es posible crear un objeto tipo Driver, instanciando la clase desarrollada por el desarrollador del

    manejador, e invocar directamente a su mtodo connect, obteniendo una conexin con la base de datos sin

    necesidad de emplear la clase DriverManager. De este modo tenemos ms control sobre el Driver que

    estamos empleando en la conexin, cuando hemos registrado ms de un driver, ya que no nos arriesgamos

    a que se establezca conexin con la BD con un driver distinto al que nosotros deseamos usar.

    CLASE DRIVERMANAGER

    Como su nombre indica, esta clase es la gestora de los diversos drivers (manejadores) que existan en nuestra

    aplicacin. Es posible que sea necesario que en una misma aplicacin se tenga varios manejadores para

    acceder a varias bases de datos.

    Los mtodos que ms nos interesan de esta clase son:

    static Connection getConnection(String url);

    static Connection getConnection(String url, String user, String password).

    Estos mtodos intentan establecer conexin con la base de datos que le indiquemos en el campo url,

    empleando para ellos todos los manejadores que hemos registrado. La diferencia entre un mtodo y el otro,

    obviamente, es que en uno slo se especifica la base de datos a la que nos queremos conectar, mientras

    que en el otro se indica tambin el nombre de usuario de la base de datos y su password. Ms adelante

    explicaremos que es el objeto Connection que devuelven estos mtodos.

    Lo que hace la clase DriverManager para intentar establecer conexin con la base de datos es invocar al

    mtodo connect de la interface Driver, interface que como veremos deben implementar todos los

    manejadores. Realiza esta operacin con todos los manejadores que tiene registrados, si el manejador

    devuelve null significa que no se ha podido conectar con la base de datos, y el gestor intenta de nuevo

    conectarse con otro manejador. Si consigue conectarse con un manejador no sigue intentndolo con el resto

    de los manejadores registrados, y si no consigue establecer la conexin con ningn manejador lanza una

    excepcin tipo SQLException.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 8

    Sintaxis de los URL de JDBC

    Los URL (Uniform Resource Locator) de JDBC identifican una base de datos, y un protocolo de conexin a

    esta, de un modo unvoco. Toda URL de JDBC consta siempre de tres partes:

    protocolo:subprotocolo:subnombre.

    Ejemplo:

    "jdbc:odbc:usuarios"

    Veamos cada una de las partes del URL:

    1. Protocolo de la conexin. Siempre es jdbc.

    2. Subprotocolo de la conexin. Identifica el tipo de mecanismo de conexin que emplearemos para acceder

    a la base de datos. Es imprescindible especificarlo para que el DriverManager pueda saber qu tipo de

    manejador debe emplear para crear la conexin. En el URL ejemplo el subprotocolo empleado para la

    conexin a la base de datos ser ODBC, por lo que el DriverManager intentar establecer la conexin con

    todos los manejadores registrados que sean de tipo 1, puente JDBC-ODBC.

    3. Subnombre, identifica la base de datos con la que queremos establecer una conexin. El subnombre es

    usuarios; ser el sistema ODBC quien proporcione, a partir de ese nombre, el resto de la informacin

    necesaria para establecer la conexin con la base de datos.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 9

    Sin embargo si empleamos otro protocolo puede ser necesario incluir la direccin de red del servidor como

    subnombre. Por ejemplo:

    protocolo:subprotocolo://servidor:puerto/subnombre

    "jdbc:microsoft:sqlserver://localhost:1433;pubsSQL;selectMethod=cursor

    As por ejemplo la URL: jdbc:bdnet://javahispano.org:4040/usuarios empleara el protocolo jdbc y un

    manejador de tipo JDBC-Net para conectarse a la hipottica base de datos usuarios a travs del puerto

    4040 de la mquina javahispano.org.

    Mtodos de la Clase DriverManager

    Todos los mtodos que encontramos en esta clase son estticos (No requieren instancia para poder utilizarlo)

    y se comentan brevemente a continuacin:

    Mtodo Descripcin

    Connection getConnection(String url) Establece una conexin con la base de

    datos identificada por la URL de JDBC que

    se pasa por parmetros.

    Connection getConnection(String url, Properties

    info)

    Establece una conexin con la base de

    datos identificada por la URL de JDBC que

    se pasa por parmetros.

    Connection getConnection(String url, String

    usuario, String contrasea)

    Establece una conexin con la base de

    datos pero en su segundo parmetro

    especifica propiedades que posee el driver,

    como puede ser la base de datos, el usuario,

    la contrasea, etc. Estas propiedades se

    organizan en pares propiedad/valor.

    void println(String mensaje) Escribe un mensaje en el flujo de actividad

    actual

    void setLoginTimeout(int segundos) Establece el tiempo de espera que el driver

    utilizar para realizar una conexin.

    INTERFAZ CONNECTION

    Representa una conexin con la base de datos. Permite crear objetos que representan consultas que se

    ejecutarn en la base de datos, y permite acceder a informacin sobre la base de datos y las posibilidades

    del manejador JDBC.

    En esta tabla recogemos los principales mtodos de la interfaz Connection. Sobre muchos de ellos

    volveremos a hablar ms adelante.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 10

    Mtodos de la Interfaz Connection

    Mtodo Descripcin

    void close() Cierra una conexin, liberando todos los

    recursos asociados a la misma.

    boolean isClosed() Devuelve verdadero si la conexin est cerrada

    boolean isReadOnly() Devuelve true si la conexin es de slo lectura

    PreparedStatement

    prepareStatement(String sql)

    Crea un objeto PreparedStatement que va a

    permitir enviar y ejecutar sentencias SQL

    parametrizadas a la base de datos

    correspondiente.

    PreparedStatement

    prepareStatement(String sql, int

    tipoResultSet, int tipoConcurrencia)

    Igual que el mtodo anterior, pero permite

    especificar las caractersticas del ResultSet que

    se obtendr a la hora de ejecutar el objeto

    PreparedStatement correspondiente.

    void setReadOnly(boolean soloLectura) Establece si una conexin posee el modo de solo

    lectura o no, dependiendo del argumento de tipo

    booleano.

    void commit()

    Hace permanentes los cambios que se realizaron

    desde el ltimo commit o rollback.

    Statement createStatement() Crea un objeto de tipo Statement.

    bolean getAutoCommit() Indica si est en modo auto-commit.

    DatabaseMetaData getMetaData()

    Devuelve un objeto tipo DatabaseMetaData

    con meta informacin acerca de la base de datos

    contra la cual se ha abierto esta conexin..

    CallableStatement prepareCall(String sql)

    Crea un objeto CallableStatement para

    ejecutar procedimientos almacenados SQL en la BD.

    PreparedStatement prepareStatement(String sql)

    Crea un objeto PreparedStatement para

    ejecutar consultas SQL parametrizadas en la BD.

    void rollback()

    Deshace todos los cambios realizados desde la ltima

    vez que se ejecut commit o rollback

    void close() Cierra una conexin, liberando todos los

    recursos asociados a la misma.

    Statement createStatement(int

    tipoResultSet, int tipoConcurrencia)

    Crea tambin una sentencia SQL pero generar

    en su ejecucin un objeto ResultSet con unas

    caractersticas determinadas.

    boolean isClosed() Devuelve verdadero si la conexin est cerrada

    boolean isReadOnly() Devuelve true si la conexin es de slo lectura

    PreparedStatement

    prepareStatement(String sql)

    Crea un objeto PreparedStatement que va a

    permitir enviar y ejecutar sentencias SQL

    parametrizadas a la base de datos

    correspondiente.

    PreparedStatement

    prepareStatement(String sql, int

    tipoResultSet, int tipoConcurrencia)

    Igual que el mtodo anterior, pero permite

    especificar las caractersticas del ResultSet que

    se obtendr a la hora de ejecutar el objeto

    PreparedStatement correspondiente.

    void setReadOnly(boolean soloLectura) Establece si una conexin posee el modo de

    solo lectura o no, dependiendo del argumento

    de tipo booleano.

  • Lenguaje de Programacin I

    PROFESOR: Ricardo Coello Palomino 1 Semana Pg. 11