Professional Documents
Culture Documents
Objetivos
Conocer los principios fundamentales de la programacin orientada a objetos con el Lenguaje Java. Preparar a los participantes en el desarrollo de aplicaciones Java que accesan bases de datos. Entender los fundamentos del desarrollo de aplicaciones Java, tanto en el lado del cliente como en el lado del servidor.
Qu es JAVA?
Java es fundamentalmente una nueva forma de computacin, basada en el poder de las redes y en la idea de que el mismo software puede correr en diferentes tipos de mquinas y sistemas operativos.
El software de Java est embebido en el dispositivo o se encuentra en el disco del computador. El software contiene una interfaz de usuario para la ejecucin de ordenes. La JVM interpreta las instrucciones del software escrito en JAVA y las ejecuta. El SO brinda el soporte a la JVM para realizar las operaciones.
Simple
Interpretado
Orientado a Objetos
Seguro
Dinmico
Multihilo
Java es Simple
La concepcin del Lenguaje fue simple desde su inicio. Este lenguaje oculta toda la dificultad que trae programar con otros lenguajes como el C++ y el uso de punteros.
Java es Portable
Java es portable gracias a su Mquina Virtual. El compilador de Java genera cdigo transportable entre diferentes plataformas (bytecode).
Windows 9x
Cdigo Fuente (.java)
Windows NT
Compilador de Java
Unix/Linux
ByteCode (.class)
Java es Interpretado
La mquina virtual de Java Interpreta el bytecode generado por el compilador. La lenta ejecucin de los programas y applets escritos en Java se debe en gran parte a este proceso. Sin embargo la potencialidad que tiene Java se debe a su carcter interpretado.
Java es Seguro
El diseo de la seguridad es un asunto crucial en el desarrollo de aplicaciones distribuidas. Hay cuatro aspectos de seguridad que Java tiene en cuenta:
Polticas de Seguridad Privacidad Autenticacin Seguridad
Java es Dinmico
Java remueve el manejo de memoria dinmica del programador. Para Java el manejo de objetos se hace por medio de referencias a estos. El programador no debe preocuparse por reservar o liberar memoria. Existe un colector de basura que lo hace todo por usted.
Java es Multihilo
Los programas, especialmente los programas de PC, son usualmente programas de un solo hilo. La CPU no puede actualizar la pantalla y hacer lectura y escritura en el disco al mismo tiempo. Java brinda el soporte para ejecutar varios hilos (procesos) al tiempo.
Java Applets
Son miniaplicaciones que se ejecutan por medio de un Browser, a travs de una pgina HTML.
Peticin de la Pgina
Aplicaciones Standalone
Estos aplicactivos de Java no necesitan un browser para ser ejecutados Estas aplicaciones se ejecutan con la ayuda de la mquina virtual de Java.
Paquetes
Un paquete en Java es un conjunto de clases que guardan un propsito comn. Estos paquetes se encuentran constituidos en archivos que normalmente estn comprimidos en zip, jar, etc.
Paquete java.awt
Paquete java.net
Java Servlets
Un servlet de Java es una aplicacin que se ejecuta en el servidor. Esta aplicacin no viaja hasta el cliente para ser interpretada por la mquina virtual del navegador. Por el contrario el servlet lo interpreta la mquina virtual del servidor.
JavaBeans
Los JavaBeans son componentes de software reutilizables que pueden unirse visualmente en otros componentes, applets, aplicaciones y servlets, utilizando herramientas visuales de desarrollo. Una herramienta de desarrollo que soporte JavaBeans, mantiene los Beans en un paleta o caja de herramientas. Se puede seleccionar un Bean de la paleta, arrastarlo dentro de un formulario, modificar su apariencia y su comportamiento, definir su interaccin con otros Beans, y componer un applet, una aplicacin, o un nuevo Bean, junto con otros Beans. Todo esto se puede hacer sin escribir una lnea de cdigo.
La API de Java
La Interfaz de Programa de Aplicacin de JAVA, o API, es un conjunto de clases desarrolladas por Sun para ser usadas con el lenguaje de programacin JAVA. Estas fueron diseadas para asistir al programador en el desarrollo de sus propias clases, applets, y aplicaciones.
La API de Java
Las clases en Java se agrupan en paquetes. Entre estos paquetes tenemos:
java.lang java.corba java.awt java.applet java.io java.sql
Paquete java.lang
Este paquete consiste de clases que son el corazn del lenguaje JAVA. Este paquete incluye no slo envolturas para los tipos de datos bsicos como Integer y String, sino tambin la manera de manejar errores por medio de las clases Throwable y Error.
Paquete java.io
El paquete java.io sirve como la biblioteca estndar de entrada y salida para el lenguaje JAVA. Este paquete le permite un nmero ilimitado de posibilidades de comunicacin al proporcionarle tanto tipos sencillos como la clase StringBufferInputStream o complejos como la clase RandomAccessFile.
Pauqte java.util
Este paquete es, esencialmente, una variedad de clases tiles que no pertenecen a ningn otro paquete. Entre estas clases prcticas se encuentran la clase Date, diseada para manipular y manejar las operaciones con fechas, la clase Hashtable y los TADs (Tipos Abstractos de Datos), como Stack y Vector.
Paquete java.net
Ya que JAVA es un lenguaje basado en red, este relativamente pequeo paquete resulta ser muy til. Sobre todo, le proporciona la capacidad de comunicarse con otras fuentes de informacin creando o conectndose a sockets o haciendo uso de los URLs y direcciones de Internet.
Paquete java.awt
El Abstract Window Toolkit (AWT) de JAVA contiene los recursos que usted necesita para crear interfaces atractivas y tiles para sus applets. El AWT no slo tiene herramientas de control, como el LayoutManager y Container, sino que tambin cuenta con herramientas interactivas concretas, como Button y TextField.
Paquete java.applet
El paquete java.applet proporciona una sola clase y tres interfaces, pero es uno de los paquetes ms usados porque es la base de todos los applets. La clase Applet es de suma importancia porque es necesaria cuando se crea un applet. Tambin es til la interfaz AppletContext, la cual se usa para interacturar con el navegador.
El archivo HTML
<html> <title>Mi Primer Applet </title> <body> <h1>El applet Hola Mundo :</h1> <hr> <applet code=HolaMundo.class width=200 height=100></applet> <hr> </body> </html>
Comentarios en Java
Comentarios de una lnea:
// Este es un comentario de una sola lnea
Operadores en Java
Los operadores realizan algunas funciones en uno o dos operandos. Los operadores que requieren un operador se llaman operadores unarios. Los operadores que requieren dos operandos se llaman operadores binarios. Los operadores unarios en Java pueden utilizar la notacin de prefijo o de sufijo.
Operadores en Java
Podemos encontrar los siguientes tipos:
Aritmticos Relacionales Condicionales Desplazamiento Asignacin
Nombres de Variables
Debe ser un identificador legal de Java comprendido en una serie de caracteres Unicode. Unicode es un sistema de codificacin que soporta texto escrito en distintos lenguajes humanos.Unicode perminte la codificacin de 34.168 caracteres. No puede ser el mismo que una palabra clave o el nombre de un valor booleano (true or false) No deben tener el mismo nombre que otras variables cuyas declaraciones aparezcan en el mismo mbito.
Declaracin de Variables
Sintxis:
TipoDeDato identificador=valor inicial;
Ejemplos:
int contador=0; char letra; double PI=3.141592654;
Control de Flujo
Las sentencias de control de flujo determinan el orden en que se ejecutarn las otras sentencias dentro del programa. El lenguaje Java soporta varias sentencias de control de flujo, incluyendo:
Toma de decisiones Ciclos o bucles Excepciones Rompimiento de flujo
if (ejecucin condicional)
Sintxis:
if (expresin lgica) sentencias;
expresin lgica
sentencia o bloque
false
sentencia1 o bloque1
sentencia2 o bloque2
cte1
true true
lista de sentencias 1
false
break
true true
cte2
lista de sentencias 2
break
false
default
true
false
true
sentencia o bloque
false
true
sentencia o bloque
Expresin Lgica
false
true
false
true
sentencia; break;
false
true
sentencia; continue;
El tamao del arreglo se debe especificar por medio del operador new:
identificador = new tipo[tamao]; Ej: numeros = new int[100];
El ndice de un arreglo inicia desde la posicin 0, y este debe ser declarado como un tipo de dato entero (int).
En este caso el primer valor de los corchetes especifica que la matriz tiene 3 filas, y el segundo valor declara que la matriz tiene 2 columnas.
Columnas Filas
(0,0) (1,0) (2,0) (0,1) (1,1) (2,1)
Para declarar cadenas tambin se puede hacer uso del constructor de clase:
String cadena; cadena = new String("Hoy es un da fro");
Ejercicios ....
Variables Control de flujo Arreglos Cadenas de caracteres
Desarrollo de Applets
Los Applets
Un applet es un programa que corre en un navegador que sea compatible con Java. Los applets tienen restricciones para brindar una mayor seguridad.
Un applet no puede cargar libreras ni definir mtodos nativos. No puede leer ni escribir ficheros en el Host en el que se est ejecutando. No puede realizar conexiones en la Red, excepto con el Host del que fue cargado.
Continuacin ...
No puede arrancar ningn programa en el Host donde se est ejecuando. No puede leer ciertas propiedades del sistema. Las ventanas que proporcionan los applets tienen un aspecto diferente a las de cualquier aplicacin.
Los Applets pueden hacer conexiones al host del que fueron cargados. Los Applets que se ejecutan dentro de un navegador Web pueden hacer que se muestren pginas HTML de una forma muy sencilla.
Continuacin ...
Los Applets pueden invocar mtodos pblicos de otros Applets que se encuentren en la misma pgina. Los Applets que se han cargado desde un directorio local (desde un directorio en el CLASSPATH del usuario) no tienen ninguna restriccin como los applets cargados a travs de la Red. Aunque la mayora de los applets paran su ejecucin cuando el usuario abandona la pgina, no tienen porque hacerlo.
La Clase Applet
App le t
(fr om a pp l e t )
s etStu b (s tub : Ap pletStu b ) : void is Active () : bo ole an g etD o cu m e ntBa s e () : U R L g etC o de Ba s e () : U R L g etPara m eter(n a m e : String ) : String g etAp ple tC on te xt() : Ap p le tC on text re s ize (w id th : in t, h eigh t : int) : vo id re s ize (d : D im en s io n) : void s ho w Sta tu s (m s g : Strin g) : vo id g etIm ag e (url : U R L) : Im a ge g etIm ag e (url : U R L, n am e : String ) : Im ag e g etAu dio C lip (url : U R L) : Aud io C lip g etAu dio C lip (url : U R L, na m e : String ) : Au dioC lip g etAp ple tInfo() : Strin g g etLo ca le () : L o cale g etPara m eterIn fo () : String [][] p la y(u rl : U R L ) : vo id p la y(u rl : U R L , n am e : Strin g) : void init() : vo id s ta rt() : void s to p() : void d es tro y() : void
Long
( fr om la n g )
D o u b le
( fro m l a n g )
Fl o a t
( fro m l a n g )
In te g e r
( fr om la n g )
Byte
(fro m l a n g ) (fro m l a n g )
Utilizacin de Envolturas
Crear el objeto:
NumeroFlotante = new Float(3.15); NumeroFlotante = new Float("3.15");
Ejercicios ...
El Paquete AWT
El paquete AWT
El AWT es un conjunto completo de elementos de interfaz de usuario que incluye ventanas, mens, botones, casillas de verificacin, barras de desplazamiento, etc. Incluye el manejo de contenedores. Incluye el sistema de control de eventos. Mecanismos para distribucin de componentes en la pantalla.
C an va s
(fro m a wt)
C on ta in er
( fro m awt )
TextC om po ne nt
( fro m awt )
Bu tton
(fro m a wt)
Pa ne l
( fro m a wt)
Win do w
( fro m awt )
TextFie ld
(fro m a wt)
App le t
(fro m a p p l e t)
Fram e
(fro m a wt)
D ia lo g
( fro m awt )
Continuacin ...
boolean mouseExit(Event evt, int x, int y) boolean mouseMove(Event evt, int x, int y) boolean mouseUp(Event evt, int x, int y) void move(int x, int y) void nextFocus() void requestFocus() void setBackground(Color) void setForeground(Color) void show()
Un contenedor es un componente que puede incluir a otros componentes (incluso a otros contenedores). Todos los contenedores del paquete awt derivan de la clase abstracta Container. Los principales contenedores son: Panel, ScrollPane, Window.
Mtodo add(...):
add(Componente);
FlowLayout
Coloca los componentes en fila mientras quepan en el contenedor, en este ltimo caso los coloca en la siguiente fila. El orden en que se ubican es segn el orden en que se agreguen al contenedor. setLayout(new FlowLayout());
BorderLayout
Coloca y ajusta el tamao de los componentes de manera que llenen completamente el contenedor. BorderLayout tiene cinco reas: North, South, East, West, y Center. setLayout(new BorderLayout()); Para adicionar los componentes:
add("North",botonOk);
CardLayout
CardLayout ayuda a manejar dos o ms componentes (normalmente ejemplares de la clase Panel) que comparten el mismo espacio. Cada componente tiene un CardLayout que lo maneja como si jugaran a cartas o las colocaran en una pila, donde slo es visible la carta superior. Se puede elegir la carta que se est mostrando.
Continuacin ...
GridLayout
Coloca los componentes en filas y columnas segn el mtodo constructor elegido y los parmetros especificados. Constructores:
public GridLayout(int rows, int columns) public GridLayout(int rows, int columns, int horizontalGap, int verticalGap) setLayout(new GridLayout(2,3));
GridBagLayout
Es el ms flexible de los administradores de diseo. En este administrador los componentes no estn restringidos a celdas e incluso pueden ocupar ms de una celda. Las caractersticas y restricciones para cada componente que se agregar al contenedor con este layout se especifican por medio de un objeto GridBagConstrains
Posicionamiento Absoluto
Los componentes se pueden ubicar de la forma que lo determine el programador, sin necesidad de utilizar un administrador de diseo
Continuacin ...
Se ubican y se dimensionan:
botonOk.reshape(x,y,ancho,alto);
Constructores:
Button() Button(String)
Mtodos:
String getLabel() void setLabel(String)
Constructores:
Label() Label(String) Label(String, int)
Mtodos:
getText() setText(String) getAlignment() setAlignment(int)
Constructores:
Checkbox() Checkbox(String) Checkbox(String,CheckboxGroup,boolean)
Mtodos:
String getLabel() void setLabel(String) boolean getState() void setState(boolean)
Constructores:
TextField(int) TextField(String,int)
Mtodos:
void setEchoCharacter(char) String getText() void setText(String) int getColumns() void Select(int,int) void SelectAll() void setEditable(boolean)
Constructores:
Choice()
Mtodos:
void addItem(String) int countItems() String getItem(int) int getSelectedIndex() String getSelectedItem() void select(String) void select(int)
Constructores:
List() List(int filas, boolean multipleseleccin)
Mtodos:
addItem(String, int pos) addItem(String) void clear() int countItems() String getItem(int pos) void delItem(int pos) int getSelectedIndex()
Continuacin ...
Mtodos:
int[] getSelectedIndexes() String getSelectedItem() String[] getSelectedItems() void select(int pos)
Constructor:
Panel()
Crear el Panel:
Panel panel1; panel1 = new Panel();
Adicionar componentes:
panel1.add(Component);
Constructores:
TextArea() TextArea(int filas, int columnas) Textarea(String, int filas, int columnas) TextArea(String)
Mtodos:
void appendText(String) int getColumns() int getRows() void replaceText(string, int inicio, int fin)
Ejercicios ...
MANIPULACION DE EVENTOS
El Ratn y el Teclado
Aprovecha la jerarqua de clases para tener clases especializadas en manejar eventos. Mientras que el mtodo de la clase que maneja los eventos, no indique que se procese el evento, este subir por el rbol de objetos, hasta que algn objeto lo detecte y lo procese.
Continuacin ...
Versiones anteriores a java 1.1 utilizan este modelo para manejar los eventos. Slo subclases de Component manejan eventos sobreescribiendo el mtodo action(), para botones y los otros componentes, y handleEvent() para las barras de desplazamiento. El retorno de "true" termina de procesar el evento, mientras que "false" sigue propagando el evento.
Continuacin ...
En este modelo los eventos son entregados a los componentes, sin importar que puedan ser manejados o no. Por este motivo NO es el modelo ms adecuado para manejar eventos.
Continuacin ...
Area de Texto
Panel
Botn
Continuacin ...
Continuacin ...
Es el objeto fuente quien recibe directamente el evento de un agente externo y verifica si "es de inters" de uno o ms Listeners. Se crea un objeto evento y llama al mtodo apropiado de cada Listener "interesado" para pasarle el evento.
Continuacin ...
Descripcin
Eventos con las ventanas (cerrar una ventana) Eventos al presionar el mouse sobre componentes Movimiento del Mouse sobre componentes Ocultamiento o visibilidad de los componentes El componente obtiene el foco Seleccin de items de tablas o listas Clicks sobre botones, Enter sobre campos, etc.
Ejemplo de ActionListener
import java.awt.*; import java.applet.*; import java.awt.event.*; public class Beeper extends Applet implements ActionListener { Button button; TextField campo; public void init() { button = new Button("Click Me"); campo = new TextField(50); add(button); add(campo); campo.setEditable(false); button.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button) campo.setText("Se Presion el Botn"); } }
Ejemplo de MouseListener
public class MouseEventDemo ... implements MouseListener { ...//where initialization occurs: //Register for mouse events on blankArea and applet (panel). blankArea.addMouseListener(this); addMouseListener(this); ... public void mousePressed(MouseEvent e) { saySomething("Mouse pressed; # of clicks: " + e.getClickCount(), e); } public void mouseReleased(MouseEvent e) { saySomething("Mouse released; # of clicks: " + e.getClickCount(), e); } ...
Ejercicios ...
Clases en Java
Las clases permiten definir la estructura y comportamiento que van a tener los objetos. Declaracin:
Modificador class NombreClase extends NombreSuperClase implemets NombreInterface { Variables; mtodos; }
Lo subrayado es opcional.
Modificadores
public: La clase se puede accesar por fuera del paquete en que se encuentra. final: La clase no puede ser una superclase. abstract: La clase solo tiene la declaracin de los mtodos pero no estn implementados aun. No se permite crear instancias de este tipo de clases.
Variables de Instancia
Las variables de instancia son aquellas que se encuentran declaradas dentro de la clase. Estas variables pueden ser declaradas a partir de los tipos primitivos o a partir de otras clases.
Mtodos
Los mtodos son las operaciones que denotan el comportamiento de los objetos del tipo de clase. Declaracin:
EspecificadorDeAcceso Modificador TipoRetorno NombreMtodo (parmetros) throws ListaExcepciones
Lo subrayado es opcional.
Especificadores de Acceso
Sirven para restringir el acceso a un mtodo.
public: El mtodo puede ser accesado por todas las clases sin importar su jerarqua o su paquete. protected: El mtodo solo puede ser accesado por las clases del paquete actual. Pero no por otras clases de otro paquete. friendly: Mtodos accesibles a la clase actual y a clases que se hereden de esta clase. private: Solo pueden ser vistas dentro de la misma clase. private protected: se puede accesar por la clase y cualquier subclase pero no al resto del paquete ni a ninguna clase por fuera del paquete.
Modificadores de Acceso
Permiten establecer las propiedades de un mtodo, tales como donde ser visible y como las subclases de la clase interactuarn con este.
static: Los mtodos y variables se comparten para las diferentes instancias de la clase. abstract: mtodos declarados pero no implementados en la clase. final: Cuando se usa permite que los mtodos de una clase no sean redefinidas en las subclases. native: Mtodos que se quieren usar pero que no estn escritos en java. Synchronized: Mtodo sincronizado para el manejo de hilos.
Invocacin de Mtodos
El Constructor de Clase
Es un mtodo de clase que tiene el mismo nombre de la clase. Este mtodo es utilizado para inicializar las variables de instancia de la clase. El mtodo constructor es invocado automticamente al crear instancias de la clase con el operador new. El constructor no puede retornar valores.
Creacin de Objetos
Para crear un objeto de una clase y tener una variable de referencia se utiliza el operador new. Sintaxis:
NombreClase objeto=new NombreClase();
Ejemplo:
Circulo objetocirculo = new Circulo();
Herencia de Clases
Para utilizar herencia se necesita definir una clase base o superclase y una clase derivada que se extienda de la superclase. Esquema general:
class superclase { ... } class derivada extends superclase { ... }
Continuacin ...
La real potencia de la herencia no es solo el hecho de adquisicin de propiedades y mtodos de la superclase, sino la facilidad de especializar la subclase con mtodos y propiedades adicionales. En el caso de los mtodos se permitir redefinir los heredados (polimorfismo).
Sobreescritura de Mtodos
Los mtodos pueden sobreescribirse en cada una de las subclases de una superclase, de manera que cuando sea invocado, se ejecute de acuerdo a la subclase del objeto en la invocacin. En algunos casos es necesario hacer referencia a las mtodos de la superclase, en estos casos es necesario utilizar (this y super).
Sobrecarga de Mtodos
Los mtodos dentro de una misma clase pueden llamarse con el mismo nombre. La diferencia debe encontrarse en los parmetros. Esta diferenciacin puede estar en los tipos de datos, la cantidad o el orden de los parmetros.
Interfaces
Una Interface es una clase que define un conjunto de mtodos, pero no los implementa. Una clase que implementa la interface cumple con implementar todos los mtodos de la interface para agregar algn comportamiento.
Ejercicios ...
Bases de Datos
Una base de datos es un conjunto de datos organizados de tal manera que facilite la extraccin de informacin. El DBMS es el conjunto de herramientas de software que administra el acceso a los datos, permitiendo su almacenamiento, consulta y actualizacin.
Componentes Cliente/Servidor
Cliente
Servicios ODBC, JDBC,HTTP Transporte TCP/IP OS
DBMS
Middleware
Modelo Relacional
Es un modelo de datos basado en dos teoras matemticas: La teora de relaciones y la Lgica de predicados de primer orden. Presentado por Codd en 1970. Este modelo presenta una estructura y reglas de integridad.
Operaciones Relacionales
Restriccin o Seleccin. Proyeccin. Producto cartesiano. Unin. Diferencia. Interseccin. Conjuncin o Join Relacional. Asignacin, Insercin, Eliminacin y Actualizacin.
El diseo lgico es independiente de la tecnologa a utilizar El diseo fsico es la implementacion del diseo lgico en una tecnologa de bases de datos particular.
Modelamiento E/R
El modelamiento de datos es la principal tcnica para el diseo lgico de datos. Compuesto por:
Entidades. Datos de las entidades. Reglas del negocio (interrelaciones). Cardinalidad de las interrelaciones.
Diagrama E/R
#ID *Nombre
Controlado por
Controla
SQL: DDL
Sentencias:
Create Drop Alter
Create:
create table NombreTabla (NombreColumna tipo modificadores, ...)
SQL: DML
Sentencias:
Select Insert Update Delete
SQL: DML
Select:
select NombreColumna, ... from NombreTabla where Condicin
Insert:
insert into NombreTabla (NombreColumna, ...) values (valor, ...)
SQL: DML
Update:
update NombreTabla set NombreColumna=valor ... where NombreColumna = valor
Delete:
delete from NombreTabla where NombreColumna = valor
SQL: DCL
Sentencias:
Grant Revoke Commit RollBack
El ResultSet
Son las filas que satisfacen el resultado de una consulta (query). El numero de filas retornadas en un result set puede ser igual a cero, una o muchas. El acceso a las filas de datos se hace una por una, y de esto se encargan los cursores. Muchos DBMS crean cursores automticamente cuando el conjunto de resultados es generado.
Transaccin
Una transaccin es un conjunto de una o ms sentencias SQL, que en conjunto hacen una unidad lgica de trabajo. Una transaccin termina cuando se hace un commit o un rollback, dependiendo de si se los SQL se efectuaron con o sin xito.
Procedimiento Almacenado
Un procedimiento almacenado es un conjunto de sentencias SQL que pueden ser llamadas bajo un nombre. EL DBMS compila el procedimiento antes de almacenarlo, y no es recompilado en su ejecucin, mejorando as el desempeo de su ejecucin.
Metadatos
Usualmente guardamos datos en la base de datos que hacen referencia a los hechos de la vida del negocio. Para almacenar esos datos es necesario que la base de datos tenga en su interior las descripciones de los datos donde se almacenaran estos hechos. A estos datos se le llaman metadatos.
Ejercicio ...
Modelamiento E/R Modelo Relacional de Datos
Qu es JDBC?
JDBC es la API estndar de acceso a bases de datos usando el lenguaje de programacin Java. Esta API se incluye con el kit de desarrollo de Java versin 1.1 y posteriores.
Nivel 1
Desarrollado por JavaSoft. Usa el driver ODBC especfico para la Base de Datos. Requiere que el ODBC se encuentre disponible en la mquina cliente donde se ejecuta la aplicacin JAVA.
Driver de Nivel 1
Aplicacin JDBC Driver Manager Puente JDBC-ODBC ODBC Driver Manager ODBC (DB2) ODBC (Oracle) Servidor Cliente
DBMS (DB2)
DBMS (Oracle)
Nivel 2
Utiliza JAVA para hacer llamadas al API de acceso (protocolo) del DBMS que debe estar disponible en el cliente. El cliente provee la conectividad y acceso a la base de datos. El driver es una implementacin parcialmente hecho en JAVA.
Driver de Nivel 2
Aplicacin JDBC Driver Manager Puente Puente JDBC-ProtocoloDBMS JDBC-ProtocoloDBMS JDBC-CAE JDBC-SQL*Net CAE (DB2) SQL*Net (Oracle) Servidor
Cliente
DBMS (DB2)
DBMS (Oracle)
Nivel 3
Utiliza los protocolos de red que vienen con el JDK para conectarse a un servidor. En el servidor se traducen los requerimientos a transacciones del DBMS. No requiere cdigo ejecutable en el lado del cliente (del API de acceso al DBMS). El protocolo de red que se utiliza es genrico, por lo tanto el mismo driver puede acceder a diferentes DBMS.
Driver de Nivel 3
Aplicacin JDBC Driver Manager Driver JDBC Protocolo genrico de red Cliente
Middleware
Middleware Servidor
DBMS (DB2)
DBMS (Oracle)
Nivel 4
Driver completamente escrito en JAVA. Comunica directamente a la base de datos con el protocolo de red del DBMS. Esta comunicacin directa se implementa a travs de conexiones de red (sockets).
Driver de Nivel 4
Aplicacin JDBC Driver Manager Cliente
DBMS (DB2)
DBMS (Oracle)
La Fuente de Datos
Tener Acceso a un DBMS:
ACCESS ORACLE MYSQL MSQL POSTGRESS INFORMIX
Puente JDBC:ODBC
Crear la fuente de datos con el administrador de ODBC instalado en el cliente.
El paquete java.sql
Conjunto de clases e interfaces escritas en JAVA. El nivel del driver consiste en implementaciones que trabajan con el manejador de la base de datos. El nivel de la aplicacin consiste en la clase DriverManager que maneja los drivers siendo utilizados por una plicacin o applet para acceder una base de datos.
Interfaces
Connection DatabaseMetaData Driver ResultSet ResultSetMetaData Statement PreparedStatement CallableStatement
La Clase SQLException
Esta clase provee un mecanismo para el control de errores cuando se accesa una base de datos. Un objeto del tipo SQLException contiene:
Una descripcin del error. Una cadena (SQLState) identificando el error. Un cdigo de error.
Continuacin ...
SMALLINT=>short INTEGER=>int BIGINT=>long REAL=>float FLOAT=>double BINARY=>byte[] VARBINARY=>byte[]
Continuacin ...
LONGVARBINARY=>byte[] DATE=>java.sql.Date TIME=>java.sql.Time TIMESTAMP=>java.sql.Timestamp
Cargando el Driver
// Aqu se carga el puente JDBC:ODBC driver = (Driver)Class.forName(NombreDriver).newInstance();
La Conexin con la BD
// Propiedades requeridas para el usuario en la BD p = new Properties(); p.put("user",usuario); p.put("password",passwd); // Aqui se establece la conexin fsica con la BD conexion = driver.connect(url,p);
Ejecutando el SQL
// Se ejecuta la instruccin SQL resultadoSQL = instruccionSQL.executeQuery(sql);
Ejercicios ...
JDBC Instrucciones SQL Estticas
Qu es un SQL Dinmico?
El SQL dinmico es una forma de preparar instrucciones SQL haciendo uso de parmetros dentro del SQL. Esto permite que el usuario sea el que decida que datos extraer de la Base de Datos.
clearParameters
Borra los valores de todos los parmetros que est usando actualmente la instruccin dinmica SQL. Preparado.clearParameters();
execute
Ejecuta una instruccin SQL ya sea de actualizacin o de consulta. ResultSet resultados = preparado.execute();
executeQuery
Se usa para ejecutar SQL que retornan un conjunto de resultados. ResultSet resultados = preparado.executeQuery();
Ejecutando el SQL
// Borra los valores de los parmetros del select selectpreparado.clearParameters(); // Especifica la edad en el select selectpreparado.setInt(1,Integer.parseInt(campo.getText())); // Ejecuta la instruccin y obtiene los resultados resultadoSQL = selectpreparado.executeQuery();
Ejercicios ...
JDBC Instrucciones SQL Dinmicas