Вы находитесь на странице: 1из 75

INSTITUTO TECNOLGICO DE TUXTLA GUTIRREZ Maestra en Tecnologas de informacin Conexin de una aplicacin de Java con una Base de Datos

M.C. Jos Alberto Morales Mancilla amancilla58@hotmail.com

INTRODUCCIN
La API que permite la conexin entre los programas de Java y las bases de datos se llama JDBC (Java Database Connectivity) y se encuentra dentro del paquete java.sql.
Java Database Connectivity, ms conocida por sus siglas JDBC, es una API que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede.

DEPENDENCIA DE PAQUETES
Java.sql

Interfaces

mi.paquete

ResulSet

Prepared Statement

Connection

Clases
Oracle.jdbc.driver Org.hsqldb Otros.drivers

PARTES DEL PROGRAMA


Nuestra aplicacin Mi.paquete usa las interfaces del paquete java.sql y estas son implementadas por los drivers de Oracle, HSQL y por otros drivers, esto quiere decir que nuestra aplicacin no depende de ninguna base de datos, solo depende de las interfaces definidas en el paquete java.sql. Con JDBC se puede conectar programas en Java con cualquier base de datos siempre y cuando dispongamos del driver especfico.

Levantar el driver
Establecer la conexin Ejecutar el query

Cerrar la conexin

PARTES DEL PROGRAMA


Levantando driver el
Class.forName(driver);

Estableciendo conexin

la

con=DriverManager.getConnection(url,usr,pwd);

Definiendo un query Preparando la sentencia Ejecutando la sentencia

String sql = SELECT empleado FROM emp; pst=con.prepareStatement(sql); Salida = pst.executeQuery(); Salida.close(); pst.close(); Con.close();

Cerrando los recursos en orden inverso al que fueron adquiridos

CONTROLADORES JDBC
Los controladores JDBC son adaptadores del lado-cliente (se instalan en la mquina cliente, no en el servidor) para convertir las peticiones desde los programas Java a un protocolo que pueda entender DBMS. Existen 4 tipos de controladores para la mayora de las bases de datos relacionales:

Tipos de conexin
Conexin Directa.- A la derecha, el controladorJD BC accede directamente al controlador del fabricante (DB Client Lib); este tipo de controladores JDBC se denominan de nivel 3 4. Entre los manejadores de base de datos que poseen una conexin directa con Java, tenemos a: My Sql, Sybase DB2, Oracle. Ya que estas no necesitan un puente para comunicarse, el trabajo y la conexin son mucho ms rpidos que una conexin indirecta. Conexin Indirecta.- A la izquierda el controlador JDBC hace de "puente" con el controlador ODBC, que es el que accede a la base de datos, este es un esquema de un controlador JDBC de nivel tipo 1.

PAQUETE Java.sql
En el paquete java.sql existen clases trabajar con las bases de datos. para

JDBC
LOS URL de JDBC.- La nocin de un URL en JDBC es muy similar al modo en que los URL se utilizan en otras situaciones. Para poder entender la base lgica de los URL de JDBC, consideremos una aplicacin que utiliza diversas bases de datos; a cada base de datos se accede mediante diferentes drivers, dependiendo del fabricante de la base de datos.

JDBC
Los URL de JDBC proporcionan un modo de identificar un driver de base de datos, en el caso de una conexin directa. Un URL de JDBC representa un driver y la informacin adicional especfica del driver para localizar una base de datos y conectarla a l. La sintaxis del URL del JDBC es como sigue:

jdbc:<subprotocolo>:<subname>
Se puede observar que estn separadas en tres partes por dos puntos.

Sintxis del JDBC


Protocolo: jdbc es el protocolo. Este es el nico protocolo permitido en JDBC. Sub-protocolo: el sub-protocolo es utilizado para identificar un driver de base de datos o el nombre de un mecanismo de conectividad de una base de datos, elegido por los proveedores del driver de base de datos. Subnombre: la sintxis del subnombre es especfica de driver. Un driver puede elegir cualquier sintxis apropiada para su implementacin.

Tipos de conexin
Por ejemplo en una conexin directa con DB2, y una base de datos de nombre libros, seria: jdbc:db2j:libros y para una conexin indirecta con Microsoft SQL Server utilizando un punte de datos JDBC-O D BC de nombre libros, nuestro URL seria:

jdbc:odbc:libros

MODELO DE DOS Y TRES CAPAS


MODELO DE DOS CAPAS Aplicacin de Java Mquina cliente MODELO DE TRES CAPAS HTML Browser

Mquina cliente

JDBC
Aplicacin de Java Server (servlets)
Servidor

JDBC

DBMS

Servidor de Base de datos

DBMS

Servidor de Base de datos

ANALIZANDO EL CDIGO
String driver = org.hsqldb.jdbcDriver; String url = jdbc:hsqldb:hsql://localhost/xdb;

La clase public jdbcDriver hereda a java.lang.Object que a su vez implementa java.sql. Driver.

CARGANDO EL DRIVER A MEMORIA


String driver = org.hsqldb.jdbcDriver; String url = jdbc:hsqldb:hsql://localhost/xdb;

Lo primero que se debe de hacer es levantar el driver a memoria, esto se hace mediante la instruccin:
Class.forname(driver);

ESTABLECIENDO LA CONEXIN
Con el driver levantado se puede establecer la conexin. Esto se hace con la siguiente instruccin: con = DriverManager.getConnection(url,usr,pwd);

El mtodo esttico getConnection de la clase DriverManager es un factory method a travs del cual se obtiene una instancia de la clase que implementa la interface Connection, donde con es una referencia a un objeto de la clase jdbcConnection que se provee como parte del driver de HSQL.

Clase DriverManager
DRIVER MANAGER.- El propsito de la clase java.sql.DriverManager
(gestor de driver) en JDBC es proporcionar una capa de acceso comn encima de diferentes drivers de base de datos utilizados en una aplicacin. En este enfoque las aplicaciones utilizan la clase DriverManager para obtener conexiones, a travs de su argumento URL. Por ejemplo para MySQL Server el driver seria: try{ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); } catch(ClassNotFoundException e) { }

Estableciendo la conexin

EJECUCIN DEL QUERY


Teniendo establecida la ejecucin el siguiente paso es ejecutar el query que se defini en una cadena de caracteres y se ejecuta de la siguiente manera: String sql = SELECT numemp, name, depto FROM emp. psm = con.prepareStatement(sql); rs = psm.executeQuery();

Donde : Connection con = null; PreparedStatement psm = null; ResultSet rs= null;

ResultSet
rs = psm.executeQuery();
El mtodo executeQuery retorna una instancia de tipo ResultSet. El ResultSet es el conjunto de filas retornado por el query que se acaba de ejecutar. El objeto ResultSet tiene un apuntador que apunta a la fila nmero 0 para acceder a la fila nmero 1 se debe avanzar el apuntador a la siguiente fila, esto se hace con el mtodo next, mientras existan registros este mtodo retorna verdadero (true), cuando ya no existen registros retorna falso (false).

ACCEDIENDO A LOS CAMPOS


while (rs.next()) { System.out.print(rs.getInt(emp +, ); System.out.println(rs.getString(name)+,); System.out.print(rs.getDate(fechanac)+,); System.out.println(rs.getInt(depto) ); }

En el siguiente cdigo, se avanza el apuntador del ResultSet mientras hayan registros. Se puede acceder a los campos de los registros apuntada por el puntero del ResultSet por medio de los mtodos getInt, getString, getDate, los cuales corresponden a los tipos de datos de los campos.

Finally
Por ltimo en finally se cierran los recursos rs, psm y con. Los mtodos close de estos objetos pueden arrojar excepciones de tipo SQLException, por este motivo los cerramos dentro dentro de un bloque try catch.
finally {
try{ if (rs != null) rs.close(); if (psm != null) psm.close(); if (con!= null) con.close(); } Catch(Exception ex){ ex.printStackTrace(); throw new RuntimeException (ex); } }

ODBC
Open Database Connectivity (ODBC) es un estndar de acceso a Bases de Datos desarrollado por Microsoft Corporation, el objetivo de ODBC es hacer posible el accesar a cualquier dato desde cualquier aplicacin, sin importar qu Sistema Gestor de Bases de Datos (DBMS) almacene los datos, el ODBC logra esto al insertar una capa intermedia llamada manejador de Bases de Datos, entre la aplicacin y el DBMS, el propsito de esta capa es traducir las consultas de datos de la aplicacin en comandos que el DBMS entienda. Para que esto funcione tanto la aplicacin como el DBMS deben ser compatibles con ODBC, esto es que la aplicacin debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos.

Ejemplo
Para comenzar se crea una base de datos llamada Agenda, con una unica tabla llamada directorio. Una vez creada la base de datos se crea el mtodo Consulta en Java usando el conector ODBC.

public Consulta(){ Connection con = null; try{ Class.forname(sun.jdbc.odbc.JdbcOdbcDriver ); con = DriverManager.getConnection(jdbc:odbc:Agenda,root,); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(select * from directorio);

Continuacin ejemplo
Los resultados se guardarn en una variable de tipo ResultSet, ahora se recorre el ResultSet mostrando en la pantalla los resultados.

while (rs.next()) { System.out.println (rs.getInt(id)+ + rs.getString(2) + + rs.getDate(3)); }

CERRANDO LA CONEXIN
con.close(); } catch(Exception e) { System.out.println(No se logr la conexin); } }

Cerrando la conexin con la base de datos

INSTALACIN DE MySQL EN WINDOWS


MySQL es un sistema gestor de bases de datos relacional cliente-servidor que incluye un servidor SQL, programas cliente para acceder al servidor, herramientas administrativas y una interfaz de programacin. Para instalar MySQL en Windows lo descargamos de la pgina web http://www.mysql.com/downloads/mysql.html, para windows se utiliza la versin 5.0.24a en cuyo caso se descarga el archivo mysql-5.0.24-win.zip.

INSTALACIN DE MySQL

Selecciono la opcinWindows (x86, 64-bit), ZIP Archive porque mi computadora es de 64 bits

Descargando el archivo

Descargando MySql
El siguiente paso es desempaquetar este archivo con winzip o unzip

Descomprimiendo el archivo

Desempaquetando el archivo
El desempaquetamiento produce los archivos que se observan en la figura

Al descomprimir el archivo crea una carpeta con el nombre mysql-5.5.8-win64, ah se encuentran los archivos descomprimidos

Instalacin de MySQL
Buscamos el archivo .EXE de MySQL, hacemos clic sobre el para dar inicio al proceso de instalacin

Instalar el Driver
Para cargar el driver de MySQL para Java se puede hacer desde la pgina
http://dev.mysql.com/downloads/conector/j/3.1.html Para buscar el conector mysql-conector-java-5.1.14.bin

Trabajando con NetBeans

Creando un proyecto nuevo (Java Aplication) con NetBeans y presionando el botn next

Nombre al Proyecto
Poniendo nombre al proyecto, en este caso le pongo Consulta y presionamos el botn finish

Cdigo generado

Cambiando nombre a la clase


Para cambiarle nombre a la clase se hace un clic derecho sobre el nombre de la clase y se selecciona la opcin refactor del men desplegable y seleccionamos Rename.

Cambiando nombre a la clase


Una vez escrito el nuevo nombre de la clase presionamos el botn Refactor

Cambiando nombre a la clase


Como se puede observar se ha cambiado el nombre de la clase

Agregando una biblioteca


Una vez que se ha creado la aplicacin de Java, el siguiente paso es agregar una biblioteca, para ello en el men Tools, se selecciona la opcin Libraries

Agregando una biblioteca


Nos aparece el cuadro de dilogo Library Manager, para agregar la nueva biblioteca presionamos el botn New Library

Agregando una biblioteca


Al oprimir el botn New Library nos aparece el cuadro de dilogo New Library que aparece en la figura, en el cuadro de edicin de texto donde nos pide Library Name le pongo MySQL es importante no dejar espacios y en la opcin Library Type lo dejo como esta Class Libraries, presionamos el botn OK

La biblioteca se ha agregado
Como se observa en la parte izquierda del cuadro de dilogo la biblioteca se ha agregado, ahora se van agregar algunos detalles a la biblioteca. Hay que fijarse que la nueva biblioteca creada este seleccionada como se observa en la parte izquierda del cuadro de dilogo.

Configurando la nueva biblioteca


Seleccionando la pestaa Classpath y dando clic en el botn Add JAR/Folder se abre un cuadro de dilogo llamado Browse JAR/Folder que permite selecciuonar el conector que ya hemos descargado llamado mysql3.1.11.jar que nos permitir conectarnos

Conector agregado

En la parte Library Classpath aparece la ruta y el archivo que se acaba de agregar, damos clic en el botn OK del cuadro de dilogo Library Manager

Agregando la biblioteca al proyecto


Dentro del proyecto en el explorador del proyecto seleccionamos el folder Libraries. Dar clic derecho sobre la carpeta para mostrar el men contextual o seleccionar la opcin Add Library o seleccionar de la lista la biblioteca recin creada con el nombre MySQL, debe aparecer como una nueva entrada dentro del nodo Libraries

Agregando la biblioteca al proyecto


Nos aparece el siguiente cuadro de dilogo llamado Add Library, seleccionamos la biblioteca recin creada llamada MySQL, y al agregarla debe aparecer como una nueva entrada en la carpeta Libraries y listo.

La biblioteca se ha agregado
Como se observa la nueva biblioteca se ha agregado al proyecto aparece como una nueva entrada en la carpeta Libraries del proyecto. Una vez instalado MySQL, descargado el driver para Java de MySQL el siguiente paso es hacer el programa en Java que me permita conectarme a la base de datos de MySQL y consultar la tabla que se ha creado.

Comprobar el driver instalado


Detectar que el Driver se inicializa y se registra para ello ponemos dentro del try la carga del driver. try { Class.forName(com.mysql.jdbc.Driver); } catch (Exception e) { e.printStackTrace(); }

Establecer la conexin con la base de datos


Para establecer la conexin con la base de datos, se debe tener el servidor de MySQL iniciado.

El servidor de MySQL abre por defecto el puerto 3306 para aceptar conexiones de posibles clientes. La aplicacin de Java deber conectarse la servidor de MySQL para acceder a la base de datos que ya se ha creado.

Establecer la conexin con la base de datos


Para establecer la conexin, la clase DriverManager tiene mtodos, en este caso usaremos el mtodo getConnection().

Connection conexin = DriverManager.getConnection(jdbc:mysql://localhost/prueba,root,clave);

El primer parmetro del mtodo getConnection() es un String que contiene la URL de la base de datos: jdbc:mysql es as porque se esta usando el driver jdbc para MySQL Localhost porque el servidor de la base de datos esta en la misma computadora en la que se esta corriendo la aplicacin de Java, si estuviera la base de datos en otra computadora se tendra que poner la IP de la mquina remota. Prueba es el nombre de la base de datos que esta en el servidor cuando se ejecuta create database prueba

Consulta a la base de datos


Para realizar una consulta a la base de datos o insertar un registro, modificar un registro, borrar un registro se necesita la clase Statement. Para obtenerla se le pide a la conexin dicha clase. Para hacerlo se hace de la siguiente manera:

Statement s = conexin.createStatement();

El Statement obtenido tiene un mtodo executeQuery(). Este mtodo sirve para realizar una consulta a la base de datos. El parmetro que se pasa es un string en el que est la consulta en SQL, donde persona es el nombre de la tabla.El mtodo executeQuery retorna una instancia de ResultSet. El ResulSet es el conjunto de filas retornado por el query que acabamos de ejecutar.
ResultSet rs = s.executeQuery(select * from persona);

Leer los resultados


Internamente el objeto resulset tiene un apuntador que apunta a la fila nmero 0, para acceder a la fila nmero 1 debe avanzar el apuntador y esto se hace con el mtodo next, que despus de avanzar retorna true o false segn exista una fila o no respectivamente. En el siguiente fragmento de cdigo avanza el apuntador de resultset mientras hayan ms filas que procesar. while (rs.next()){ System.out.println(rs.getInt(1)+ + rs.getString(2)+ +rs.getDate(3)); } Una vez que el apuntador apunta a un registro, los mtodos getInt(), getString(), getDate() nos devuelven los valores de los campos. A estos mtodos se les pasa como argumento un valor de tipo entero que indica la columna de la tabla de la base de datos.

Cerrando la conexin
Una vez que se ha terminado de usar la conexin, esta se se debe cerrar, esto significa terminar la conexin con la base de datos, el fragmento de cdigo indica como hacerlo:

conexion.close();

Programa de consulta

Instalar en NetBeans el conector a la base de datos


Para conectar a una aplicacin a una base de datos, se requiere: 1. Instalar en NetBeans el conector a la base de datos. 2. Establecer la conexin entre NetBeans y la base de datos.

Conexin entre NetBeans a la base de datos


Para instalar en NetBeans el conector a la base de datos en este caso MySQL se hace lo siguiente: 1. En Services expanda los nodos DataBases y Drivers para ver los conectores disponibles y las conexiones a las bases de datos disponibles como se observa en la figura.

Agregando el conector de MySQL


Para agregar el conector de MySQL, haga clic con el botn derecho en el nodo Drivers en el cuadrito emergente que aparece New Driver haga clic y seleccione la opcin Add Driver del men emergente.

Agregando el conector
El siguiente cuadro de dilogo sirve para agregar el conector presione el botn Add

Agregando el conector
En el cuadro de dilogo para seleccionar el conector, navegue hasta la ubicacin del conector, seleccinelo y presione el botn Abrir

Informacin del conector


En el cuadro de dilogo para agregar el conector aparecer la informacin del conector seleccionado, como se observa en la figura. Para confirmar presione el botn OK.

Agregando el conector de MySQL


Un nuevo nodo para el conector a MySQL, aparecer en la ventana Services, como se observa en la figura.

Conexin de NetBeans a la Base de Datos


Selecciona la opcin Connect Using, del men emergente. Aparecer un cuadro de dilogo para establecer una conexin nueva, como se muestra en la figura. Establezca el URL de la base de datos, Database URL:, en el formato: jdbc:mysql://servidor:puerto/baseDatos

Estableciendo la conexin
Si el servidor utiliza el puerto predefinido, se puede omitir; baseDatos es la base de datos a la que se desea conectar. Establezca el nombre del usuario, User Name:, y contrasea, Password:, para acceder a la base de datos y presione el botn OK

Estableciendo la conexin
En la ventana Services, aparecer un nuevo nodo con la conexin a la base de datos, como se muestra en la figura.

Acceso a la Base de Datos


NetBeans nos permite realizar operaciones sobre la base de datos como crear y borrar tablas, agregar y eliminar columnas, agregar, modificar y eliminar renglones, realizar consultas, etc. Para hacer estas operaciones expanda el nodo con la conexin a la base de datos para que aparezcan nodos con las tablas, vistas y procedimientos, como se muestra en la figura. Expandiendo el nodo Tables veremos las tablas.

Acceso a la Base de Datos

Base de datos mancilla en MySQL

En la base de datos mancilla en MySQL se encuentra la tabla alumnos con los datos que se muestran en la figura.

Modificando el programa

Consulta a la tabla alumnos

Insertar datos en la Tabla alumnos

Ejecutando el programa

Tarea
Hacer un programa en Java que se conecte a una base de datos remota llamada Empleado en MySQL, donde se puedan hacer altas, bajas, consultas, modificaciones, directorio y salir. Usar componentes awt o swing.

Вам также может понравиться