This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA
universidad de panam�
centro regional universitario de veraguas
facultad de inform�Tica, electr�Nica y comunicaci�N
escuela de ingenier�A en inform�Tica
licenciatura eb inform�Tica para la gesti�N educativa y empresarial
informe
clases y metodos involucrados en la
conecci�N y consulta de una base de datos mysql usando java
estudiante
reyes, isis 2-160-330
dutari, luz mar�A 9-717-1496
profesor
diego santimateo
ii semestre
2006
introducci�N
mysql es un sistema de gesti�n de base de datos, multihilo y multiusuario con m�s de seis millones de instalaciones.
est� desarrollado en su mayor parte en ansi c.
existen varias apis que permiten, a aplicaciones escritas en diversos lenguajes de programaci�n, acceder a las bases
de datos mysql, incluyendo c, c++, c#, pascal, delphi (via dbexpress), eiffel, smalltalk, java (con una implementaci�n
nativa del driver de java), lisp, perl, php, python, ruby, realbasic (mac), freebasic, y tcl; cada uno de estos utiliza
una api espec�fica. tambi�n existe un interfaz odbc, llamado myodbc que permite a cualquier lenguaje de programaci�n
que soporte odbc comunicarse con las bases de datos mysql.
en este informe trataremos lo relacionado con las clases y m�todos con que cuenta el lenguaje java para realizar la conexi�n
al sistema mysql y consultar a una base de datos escrita en este lenguaje.
conexi�N y consulta a mysql desde java
es importante se�alar que para realizar una conexi�n Mysql es necesario instalar el programa mysql y los driver para java de mysql.
podemos decir que el proceso no es dif�cil, solo debemos documentarnos debidamente, es por ello que a trav�s este informe se muestra las clases y m�todos para que podamos alcanzar nuestro objetivo: conectarnos a mysql y consultar a sus datos.
para poder realizar un programa en java con base de datos mysql, necesitamos el paquete de java.sql*. puesto que casi todas los m�todos relativos a base de datos pueden lanzar la excepci�n Sqlexception, meteremos todo nuestro programa en un try-catch.
* paquete java.sql:proporciona el api para tener acceso y procesar datos en una fuente de datos la utilizaci�n del lenguaje de programaci�n Javatm.
contiene el paquete:
el paquete de programas de java.sql contiene api para lo siguiente:
hacer una conexi�n con una fuente de datos
o drivermanager class
o driver interface
o driverpropertyinfo class
o connection interface
enviar instrucciones sql a una base de datos:
drivermanager el interfaz de conductor de clase
driverpropertyinfo la clase el interfaz de conexi�n que env�a sql declaraciones a una base de datos el interfaz de declaraci�n para enviar declaraciones b�sicas sql
preparedstatement el interfaz para enviar declaraciones listas o declaraciones b�sicas sql (sacado de la declaraci�n)
callablestatement el interfaz para llamar la base de datos almacena procedimientos (sacado de preparedstatement)
recuperar y actualiza los resultados de base de datos (query)
- resultset interfaz
hace correspondencia a un valor sql a est�ndar en el lenguaje de programaci�n Java.
o array interface
o blob interface
o clob interface
o date class
o ref interface
o struct interface
o time class
o timestamp class
o types class
costumbre tiene correspondencia sql tipo definido por usuario a una clase en el lenguaje de programaci�n Javan�s
�
o sqldata interface
o sqlinput interface
o sqloutput interface
el suministro de la informaci�n sobre la base de datos y las columnas de un resultset objeto de el interfaz:
o databasemetadata
o resultsetmetadata el interfaz
lanzamiento de excepciones
o sqlexception lanzado por la mayor parte de m�todos cuando hay un problema que tiene acceso a
datos y por algunos m�todos para otros motivos.
o sqlwarning lanzado para indicar una advertencia datatruncation lanzado para indicar que los datos
pueden haber sido truncados.
o batchupdateexception lanzado para indicar que no todas las �rdenes en una actualizaci�n de hornada
ejecutada satisfactoriamente .
suministro de seguridad(valor)
o sqlpermission interfaz
un programa java, si quiere consultar la tabla de base de datos que ha creado, deber� conectarse al servidor de mysql.
conexi�N de una base datos mysql usando java
existen varias clases y m�todos que se utiliza para la concepci�n de una bd mysql usando java, en este informe presentamos
las m�s utilizadas para la misma.
es importante se�alar que lo que varia es el nombre del driver.
por tanto toda clase utiliza m�todos correspondientes que tiene funciones espec�ficas de acuerdo al objetivo que se desea lograr.
a continuaci�n mostramos estas clases y m�todos.
para conectar a la base de datos se utiliza la clase o interfaz connection.
- getconnection: devuelve el enlace de conexi�n a la base de datos.
si ocurre un error en el acceso a la base de datos devuelve sql exception
a- class connection
public interface connection
es aquella que abre una sesi�n o conexi�n con la base de datos especificada y, mediante el m�todo drivermanager.getconnection,
una conexi�n (sesi�n) con una base de datos espec�fica. dentro del contexto de una conexi�n, sql instrucciones que son ejecutados y
los resultados son devueltos.
la base de datos de una conexi�n es capaz de proporcionar la informaci�n que describe las tablas, su gram�tica apoyada sql, sus
procedimientos almacenados, las capacidades de
esta conexi�n, etc�tera. esta informaci�n es obtenida con el m�todo getmetadata.
b- class drivermanager
public class drivermanager
como la parte de su inicializaci�n, la clase drivermanager intentar� cargar las clases de conductor referidas en la caracter�stica (propiedad)
de sistema "jdbc.drivers". esto permite a un usuario para personalizar a los conductores jdbc usados por sus usos. por ejemplo en su ~/.hotjava/
properties el archivo usted podr�a especificar:
jdbc.drivers=foo.bah. driver:wombat.sql. driver:bad.taste.ourdriver
un programa tambi�n expl�citamente puede cargar a conductores jdbc en cualquier momento. por ejemplo, el my.sql. el conductor es cargado por la declaraci�n siguiente:
- class.forname (" my.sql. conductor "); (ver clase class).
la clase drivermanager tiene m�todos getconnection().
cuando llaman el m�todo getconnection, el drivermanager intentar� localizar a un conductor conveniente de entre aquellos cargados en la inicializaci�n y aquellos cargado
expl�citamente la utilizaci�n mismo classloader que el programilla corriente usa.
- drivermanager.getconnection()
es el m�todo que devuelve el objeto de connection que produjo este objeto de declaraci�n. en otras palabras, es el m�todo que intenta seleccionar el driver apropiado de
entre lo que tiene la conectividad java a bases de datos tenga registrados en el sistema.
ejemplo: connection con=drivermanager.getconnection(�url,�usuario�,�password�);
connection conexion = drivermanager.getconnection ("jdbc:mysql://localhost/prueba","root", "la_clave");
el primer par�metro del m�todo getconnection() es un string que contiene la url de la base de datos:
jdb:mysql porque estamos utilizando un driver jdbc para mysql, que es el que nos hemos bajado.
localhost porque el servidor de base de datos, donde se corre el programa.
prueba es el nombre de la base de datos que he creado dentro de mysql. se debe poner la base de datos dentro del servidor de mysql a la que se quiere uno conectar.
usuario: es el nombre del usuario.
password: es la palabra clave para poder acceder a la base de datos
c- clase class
public final class class
los casos de la clase la clase representan clases e interfaces en un uso java. cada serie tambi�n pertenece a una clase que es reflejada como un objeto de clase que es compartido por
todas las series con el mismo tipo de elemento y el n�mero de dimensiones. los tipos primitivos java (booleano, int,flota,double) y el void de palabra clave tambi�n son representados como objetos de clase.
la clase no tiene ning�n constructor p�blico. en cambio objetos de clase son construidos autom�ticamente por la m�quina java virtual como las clases son cargadas y por llamadas al m�todo defineclass en el
cargador de clase. el mismo se utiliza para resgistrar e driver de java usando este cargador de clases class.forname.
ejemplo: class.forname(�nombre del driver�);
- forname()
la clase p�blica est�tica forname (string nombre, booleano inicializan, classloader el cargador) el objeto de clase para la clase con el nombre especificado.
devuelve el objeto de clase asociado con la clase o el interfaz con el nombre acordado, usando el cargador de clase dado. considerando el nombre totalmente calificado para una clase o el interfaz (en el mismo
formato devuelto por getname) este m�todo intenta localizar, cargar, y unir la clase o el interfaz. el cargador de clase especificado es usado para cargar la clase o el interfaz. si el cargador de par�metro es nulo.
si el name denota un tipo primitivo o void, una tentativa ser� hecha para localizar en la clase definida por usuario en el paquete de programas unname cuyo nombre es el name. por lo tanto, este m�todo no puede ser
usado obtener cualquiera de los objetos de clase que representan tipos primitivos o void.
si el nombre denota una clase de serie, el tipo componente de la clase de serie es cargado, pero no inicializado.
por ejemplo, en un m�todo de caso la expresi�n:
class.forname("foo")
una llamada a forname ("x") causa la clase llam� X para ser inicializado.
par�metros:
o nombre - el nombre totalmente calificado de la clase deseada
o inicializa - si la clase debe ser tras el cargador inicializado
o cargador de clase de lo cual la clase debe ser cargada.
retorna:
o objeto de clase que representa la clase deseada.
- newinstance()
crea una nueva instancia de la clase representada por la clase objeto (object).
******************************************************************************
consulta a una base de datos mysql a java
para realizar cualquier acci�n sobre la base de datos (consulta, insertar nuevos registros, modificar los existentes o borrar), necesitamos una clase statement. para obtenerla, se le pide dicha clase a la conexi�n.
la forma de hacerlo, para una consulta, es la siguiente:
ejemplo:
statement s = conexion.createstatement();
un objeto statement es el que env�a nuestras sentencias sql al controlador de la base de datos. simplemente creamos un objeto statement y lo ejecutamos, suministando el m�todo sql apropiado con la sentencia
sql que queremos enviar. para una sentencia select, el m�todo a ejecutar es executequery. para sentencias que crean o modifican tablas, el m�todo a utilizar es executeupdate.
a- class statements
public interface statements
es la clase objeto usado para ejecutar las instrucciones est�tica sql y obtener los resultados producidos por ello.
s�lo un objeto de resultset por objeto de statements puede estar abierto en cualquier punto a tiempo. por lo tanto, si la lectura de un objeto de resultset es interleaved con la lectura del otro, cada uno debe haber
sido generado por objetos de declaraci�n diferentes. toda la declaraci�n ejecuta m�todos impl�citamente cierran la corriente de un statment resultset el objeto si uno abierto existe.
m�todos que utiliza:
- createstatement()
crea un objeto de declaraci�n para enviar declaraciones sql a la base de datos. sql declaraciones sin par�metros normalmente son ejecutados usando objetos de statements. si la misma declaraci�n Sql es ejecutada
muchas veces, es m�s eficiente usar un objeto de preparedstatement. los juegos de resultado creados usando el objeto de declaraci�n devuelto por omisi�n(defecto) tendr�n el avanzado �nico tipo y la coincidencia s�lo para leer.
puede lanzar una excepci�n que hay que capturar.
retorna un nuevo objeto de statements.
- executequery()
el statement obtenido tiene un m�todo executequery(). este m�todo sirve para realizar una consulta a base de datos.
ejemplo: s.executequery ("select ced, nombre, edad from estudiante");
ejecuta una declaraci�n Sql que devuelve un objeto de resultset, si se produce un error devuelve el mensaje sqlexception.
es el m�todo m�s utilizado para ejecutar sentencias sql es executequery. este m�todo se utiliza para ejecutar sentencias select, que comprenden la amplia mayor�a de las sentencias sql. pronto veremos como utilizar este m�todo.
donde select selecciona los campos que tiene la tabla, y estudiante es el nombre del nombre que hemos puesto a la tabla en la base de datos.
par�metros:
sql : es una declaraci�n sql est�tica
retorna:
- un objeto de resultset que contiene los datos producidos
- sqlexception - si se produce un error de acceso a la base de datos.
- executeupdate()
este m�todo ejecuta una instrucci�n de tipo insert, update o delete.
el m�todo executeupdate tambi�n se utiliza para ejecutar sentencias sql que actualizan un tabla. en la pr�ctica executeupdate se utiliza m�s frecuentemente para actualizar tablas que para crearlas porque una tabla se crea s�lo una vez,
pero se puede actualizar muchas veces.
ejemplo:
statement stmt = con.createstatement();
stmt.executeupdate("insert into coffees " + "values ('colombian', 101, 7.99, 0, 0)");
b- class resultset
este resultset no es m�s que una clase java similar a una lista en la que est� el resultado de la consulta. cada elemento de la lista es uno de los registros de la base de datos. en realidad, resulset no contiene todos los datos, sino que los va
consiguiendo de la base de datos seg�n se van pidiendo. resultset es solo de lectura.
public interface resultset
una tabla de datos que representan un resultado de base de datos se pone, que por lo general es generado ejecutando una instrucci�n que pregunta la base de datos.
un objeto de resultset mantiene un cursor que indica su fila corriente de datos. al principio el cursor es colocado antes de la primera fila. el siguiente m�todo mueve el cursor a la siguiente fila, y porque esto vuelve falso cuando no hay m�s
filas en el objeto de resultset, esto puede ser usado en el lazo de rato iterar por el juego de resultado.
una falta resultset el objeto no es updatable y tiene un cursor que avanza s�lo. as�, es posible iterar por ello s�lo una vez y s�lo de la primera fila a la �ltima fila. nuevos m�todos en el jdbc 2.0 api hacen posible de producir los objetos
de resultset que son enrollables y/o updatable. el fragmento de c�digo siguiente, en el cual la estafa es un objeto de conexi�n v�lido, ilustra como hacer un juego de resultado que es enrollable e insensible a actualizaciones por otros, y es updatable.
mirar campos de resultset para otras opciones.
statement stmt = con.createstatement ()
resultset rs = stmt.executequery("select a, b from table2");
m�todo que utiliza:
- getresultset()
m�todo que devuelve el resultado corriente como un objeto de resultset. deber�an llamar este m�todo s�lo una vez por resultado.
ejemplo: resultset rs=s.getresultset();
- next()
m�todo que hace que dicho puntero avance al siguiente registro, en este caso, al primero. si lo consigue, el m�todo next() devuelve true. si no lo consigue (no hay siguiente registro que leer), devuelve false.
por tanto, una forma de ir leyendo los registros en meternos en un while.
while (rs.next())
{
system.out.println (rs.getint (1) + " " + rs.getstring (2)+ " " + rs.getdate(3));
}
- getint()
el m�todo getint devuelve el valor entero de una columna designada como par�metro de este m�todo.
ejemplo: rs.getint(�edad�);
- par�metros:
- columnname - el nombre de la columna
el valor de columna, si el valor no es compatible con el tipo de valor retornado por este m�todo, el valor devuelto es 0 . si se produce un error de acceso a la base de datos devuelve sqlexception
- getstring ()
el m�todo getstring devuelve el valor tipo cadena de la columna designada como par�metro de este m�todo.
par�metros:
columnname - el nombre de la columna:
el valor de columna, si el valor no es compatible con el tipo de retorno de este m�todo, el valor devuelto es nulo.
si se produce un error de acceso a la base de datos devuelve sqlexception.
co mentario general
como resultado de la investigaci�n realizada en internet, presentamos solo las clases y m�todos de java que tienen que ver con la consulta y conexi�n a una base de datos con mysql ya que existen
muchas otras clases y m�todos que podemos utilizar para manipular una base de datos y que no fueron inclu�dos en este informe.
el primer paso antes de crear nuestra base de datos es realizar la conexi�n con mysql creando un objeto de este tipo, luego implementamos las clases y m�todos necesarios para consultar datos,
actualizar y presentar los resultados de estas operaciones en el objeto creado anteriormente.
a medida que vayamos desarrollando la siguiente etapa del examen semestral podremos experimentar la interacci�n con este sistema para crear una base de datos y gestionar los registros que la componen.
webgraf�As
1. sun microsystems, inc. 1993-2001 -javatm 2 platform, standard edition, v 1.3.1 api specificatiom-ava servlets y javaserver pages [web en l�neat].
disponible desde internet.<http://www.it.uc3m.es/java/infoadi7cional/docs/api/> j[con acceso el 12-11-2006]
2. universidad carlos iii de madrid-departamento de ingenier�a en inform�tica. fecha desconocida [web en l�nea].
disponible en internet <http://www.it.uc3m.es/nati/docencia/aseb/practica.htm> [con acceso el 12-112006].
3. blueman- 26 septiembre del 2003 . mysql con java en ms windows. [turorial en l�nea].
disponible desde internet <http://cursosgratis.emagister.com/frame.cfm?id_user=&id_centro=27422070033 149505256526748524548&id_curso=52978020050266527069706757524552&url_frame= http://www.mysql-hispano.org/page.php?id=24> [con acceso 13-11-2006].