Você está na página 1de 29

Acceso a MySQL

Acceso a Bases de Datos.


Antes de abrir NetBeans, primero abriremos la interfaz grfica de MySQL, para crear la base de
datos y la tabla en la que vamos a almacenar todos los registros. Es algo similar a lo que vimos
en JavaDB, pero ahora podemos hacer una conexin remota.
Busquen las siguientes
Administrator

opciones:

Inicio->Todos

los

Programas->MySQL->MySQL

Les mostrar la siguiente ventana:

En el cuadro de texto de Password, debes teclear root. Y das enter

Selecciona la opcin de Catalogs (Catlogos) y ubica donde se encuentran los conos amarillos,
debajo de Schemata.
Da clic derecho en cualquier parte en blando en el recuadro de los Esquemas (Schema) Daremos
clic en crear nuevo Schema.

Le damos un nombre a la base de datos (Schema): teclearemos bdtareas

Selecciona la base de datos, el icono amarillo que acabas de crear con el nombre de bdtareas.
Y te aparecer una pantalla como la siguiente:

Vamos a crear la tabla tblTareas, para ello damos clic en el botn de Create Table que se
encuentra en la parte inferior de la pantalla. Y te aparecer la siguiente imagen:

Damos de alta la tabla tblTareas, con los campos: idtbltareas (int) autoincremental, materia como
texto de 40 de longitud, docente de tipo texto de 40 de longitud, descripcin de tipo texto de 100
de longitud, fecha de tipo Fecha. Tal y como se muestra en la imagen.
Debes cuidar que tu pantalla para crear la tabla, quede igual que la imagen que se present.
Una vez que ya la tengas igual, dale clic en Apply Changes, y aparecer la siguiente ventana:

Es una sentencia en SQL que te solicita el MySQL Administrator para poder crear la tabla. La
tabla la crea el servidor de MySQL. Dale clic en Execute y te regresa a la pantalla anterior. Dale
clic en Close. Y ya tenemos nuestra tabla.

Cerramos el MySQL Administrator.


Comenzamos con el proyecto. Abriremos un nuevo proyecto y lo llamaremos: ControlTareas_04.

Nota: Verifica que la casilla (checkbox) de donde dice Crear clase principal(Create Main Class),
no est activada, para no generar un Main. Dale click en Terminar (Finish).
Dentro del proyecto, comienza por agregar algunos paquetes: conexiones y ventanas.

Antes de continuar, se debe descargar el conector de la pgina de MySQL para Java, el conector
J
para
Windows,
que
se
encuentra
en
el
siguiente
link
http://dev.mysql.com/downloads/connector/j/

Se descarga un archivo .zip, el cual debes descomprimirlo dentro de la carpeta de tu proyecto de


NetBeans. Se descomprime un archivo JAR, llamado mysql-connector-java-5.1.23-bin. Una
vez lo tengas en tu directorio, regresamos al NetBeans.
Demos clic derecho en Bibliotecas (Libraries) y seleccionamos agregar Aadir JAR/Archivo (Add
JAR/Folder), buscamos donde est localizado el conector de mysql que acabamos de
descomprimir y damos clic en Abrir.

Ahora ya tenemos la librera de MySQL agregada, esa librera me servir para establecer una
conexin entre la aplicacin de Java con el servidor de MySQL para poder manipular la base de
datos que acabo de crear. Sin este conector, hagan de cuenta que tienen dos telfonos de casa
pero si cables.
Por lo tanto debemos tener el proyecto tal y como se muestra en la imagen:

Clases para Operaciones en la Base de Datos


Una de las principales caractersticas que los diversos lenguajes de programacin es que puede
establecer un enlace a cualquier sistema gestor de bases de datos para poder manipularlas. Este
enlace, hagan de cuenta, es como la conexin a la lnea de telfono, excelente analoga jajaja.
Para ello debemos crear una clase en netbeans que me permita establecer dicha conexin.
EstablecerConexion.java
Entonces comenzamos creando un Archivo .Java llamado EstablecerConexion para iniciar el
enlace. Una vez creado el archivo, definiremos cinco atributos a nivel de clase, tal y como
aparece en la imagen:

En la lnea 8, donde se declara la variable servidor, se determina a qu servidor de MySQL se


va a conectar, en este caso es al servidor local, por eso se escribe localhost. En caso de que el
servidor no sea local, se suple localhost por la direccin ip donde se encuentra el servidor de
MySQL, y por consecuencia es en donde se encuentra mi base de datos. Por ejemplo: String
servidor = "jdbc:mysql://200.79.84.5/" + bd; la variable bd se le asigna el nombre de la base
de datos como la dimos de alta en MySQL. La variable nombre contiene el valor del nombre del
usuario y la variable contra guarda el password; ambas variables se utilizarn para acceder al
servidor de MySQL y tener acceso a la base de datos. Y por ltimo, la variable con, es de tipo
Connection, es la clase que permite manipular la configuracin del JAR desde NetBeans o Java,
para lograr el acceso a la base de datos.
Ahora vamos a crear el constructor de la clase. Tal y como se muestra en la imagen. Cabe
sealar que el constructor debe tener el mismo nombre de la clase.

Solo hacemos que los atributos contra y pass tengan los valore enviados a esta clase de
EstablecerConexion.JAVA, puesto que se va a acceder a esta clases desde otras dentro del
proyecto.
Declararemos otro constructor de la clase pero ahora sin recibir ningn parmetro. Cabe
mencionar que por la cualidad del Polimorfismo, podemos declarar varios mtodos con el mismo
nombre, pero no con los mismos parmetros. As que podemos declarar otro constructor, pero
ahora sin parmetros. Teniendo el cdigo como la siguiente imagen.

El objejo Class.forName har referencia a una librera del conector de MySQL, para poder utilizar
el Driver para la conexin a la base de datos. En caso de que no se cargue dicho Driver, no se
puede establecer la conexin a la base de datos. A la variable con, a travs del DriverManager,
se establece la conexin con los valores del servidor, el nombre del usuario y el password. Se
10

valida si con es diferente de null, para verificar la conexin satisfactoria. Se manipulan dos tipos
de excepciones, la primera tiene que ver con el Driver y la configuracin del servidor de MySQL,
para lograr la conexin. Y la segunda excepcin es en caso de que alguna clase no se haya
encontrado, principalmente el Class.forName que contendr el valor del Driver de MySQL.
No se desanimen, son muchas validaciones para poder establecer la comunicacin con la base
de datos. Esta es una de las diferencias entre la prctica pasada y esta que estamos realizando.
No se deanimen, vamos bien.
Apenas vamos iniciando, creo que esto se est poniendo interesante. A poco no? Ahora con lo
que sigue. Establecemos los mtodos Getter y Setter para el atributo con de tipo Connection. Y
tenemos algo parecido al siguiente cdigo:

Con ello podemos leer y asignar el valor de la conexin al atributo con para establecer la
conexin a la base de datos.
Ahora crearemos un mtodo de ObtenerConexion de tipo Connection, recuerden que el tipo de
mtodo indica el valor que va a retornar una vez que se mande llamar. Es un mtodo sencillo
pero nos sirve para regresar la conexin a la base de datos desde cualquier clase que la
mandemos llamar.

Seguimos trabajando dentro de esta clase.


Y qu dijeron? Ya se terminaron los mtodos de configuracin de la conexin a la base de
datos; pues no, lamento decirles que falta solamente falta el mtodo que nos permite cerrar la
conexin a la base de datos. As que a crearla.

11

El mtodo close del objeto con para cerrar la conexin a la base de datos, no se recomienda
que la base de datos est por mucho tiempo conectada porque hace que la base de datos se
inconsistente.
Ahora s! Hemos terminado los mtodos para administrar la conexin a la base de datos
utilizando el conector J de MySQL.
Operaciones de Lectura y Escritura a la Base de Datos
Como introduccin, haremos notar que en las bases de datos existen dos operaciones principales
y de rigor que se debe hacer directamente a la memoria. Estamos hablando de operaciones de
lectura y escritura de datos.
Dentro de la misma clase de EstablecerConexion, haremos los mtodos para aplicar los dos tipos
de operaciones. Comenzaremos creando el mtodo que nos permite insertar datos a la tabla que
tengo en mi base de datos.
El mtodo es:

12

Dentro de este mtodo, resaltaremos dos sentencias.


El PreparedStatement de la clase java.sql, prepara al editor de lneas de comando para
operaciones de escritura. El servidor de MySQL trabaja a travs de lneas de comandos
y este mtodo permite preparar y editar la lnea de comandos para ejecutar la instruccin
de SQL.
El mtodo execute() da la instruccin al servidor de MySQL de que ejecute la sentencia
que se escribi en la lnea de comandos en el PreparedStatement. En dado caso de que
no haya errores la Excepcin que se maneja no ser lanzada, en caso de que ocurra
algn error, el mensaje de error aparecer en una ventana emergente.

Seguimos con el mtodo que nos servir para leer datos.

Dentro de este mtodo, resaltaremos dos sentencias.


El Statement de la clase java.sql, prepara al editor de lneas de comando para
operaciones de lectura. El servidor de MySQL trabaja a travs de lneas de comandos y
este mtodo permite preparar y editar la lnea de comandos para ejecutar la instruccin
de SQL.
El mtodo executeQuery() da la instruccin al servidor de MySQL de que ejecute la
sentencia que se escribi en la lnea de comandos en el Statement. Solo se recuperan
los datos almacenados en la base de datos en ese momento. En dado caso de que no
haya errores la Excepcin que se maneja no ser lanzada, en caso de que ocurra algn
error, el mensaje de error aparecer en una ventana emergente.
Terminamos con el archivo EstablecerConexion.Java. Solo ilustrar las libreras que deben ser
importadas.

13

OperacionesDML.Java
DML son las siglas de Lenguaje de Manipulacin de Datos (siglas en ingls). En este tipo de
lenguaje, entran todas las sentencias de SQL de lectura (Select) y escritura (Insert into, Update,
Delete).
Por lo tanto haremos los mtodos necesarios para manipular solamente tres sentencias de las
mencionadas, las cuales son: Select, Insert into, Update.
En el paquete de conexiones, crearemos un archivo .Java, el cual le pondrs el nombre de
OperacionesDML.Java. En esta clase, escribiremos todos los mtodos que permitan enviar las
sentencias en SQL para las operaciones de lectura y escritura.

Notamos que la imagen que sigue se presentan las libreras que se van a necesitar en
OperacionesDML.java, cada una tiene su propia funcin y se recomienda que no se omita
ninguna.

14

En la siguiente imagen se declara la instancia objConexion de tipo clase EstablecerConexion,


para poder las operaciones de lectura y escritura utilizando la conexin a la base de datos.
Recuerda que para poder hacer dichas operaciones de lectura y escritura, debemos tener el
enlace hacia la base de datos.

Mencionaremos cada uno de los mtodos que se van a utilizar dentro de OperacionesDML.java
para cada una de las operaciones que ya mencionamos antes.
Como primer mtodo tenemos InsertarTareas, recibiendo parmetros de acuerdo al nmero de
campos que tenga en la base de datos; se menciona un parmetro por campo. Ser cierto? Si,
no lo dudes, y si te preguntas que en dnde est el Idtbltareas, te dir que ese campo es de tipo
numrico y es autoincremental. Esto significa que por cada registro que se vaya insertando en la
tabla, el valor de idtbltareas va incrementando de uno en uno automticamente.
Sin embargo vemos en la sentencia de SQL, en Insert Into, que tenemos un 0 para el primer
campo. Esto es sencillo, el autoincremental no necesita valores, sin embargo la sentencia Insert
into requiere que la cantidad de valores que se escriben despus de VALUES, sea el mismo para
cada campo. Claro hay excepciones, pero eso lo veremos luego.
En las siguientes dos imgenes, se mencionan dos mtodos, uno para insertar y el otro para
modificar datos. En ambos, se necesita una instancia de tipo Statement llamada ejcutor, que
nos sirve para preparar la lnea de comandos del servidor de MySQL y que reciba en esa lnea
de comandos una cadena que representa la operacin de insertar un registro (Insert Into); a
diferencia del segundo mtodo, es el valor de la cadena de SQL, cambiando el insert into por
el Update. Las dos sentencias (insert into y update) son sentencias para escritura en la memoria.

15

El siguiente mtodo, se utiliza para leer o recuperar datos desde la base de datos a la aplicacin.
Se realiza a travs de un arreglo bidimensional y es el valor que regresa el mtodo. Recibe dos
parmetros que indica cuntos renglones me arroja la consulta y la segunda una cadena de texto
que representa una sentencia en SQL que me permite ver la informacin de cada campo.
Los primeros 5 renglones despus del Try, son las sentencias para recuperar el nmero de
renglones que me arroja una lectura de la base de datos, eso nos servir para dimensionar
nuestro arreglo Datos de tipo Object, la instancia res es de tipo Resultset, lo cual me indica que
puedo leer los datos del resultado de la consulta que se hizo. Y con el mtodo getInt(cont) lo
que estamos haciendo ah es recuperar el valor que me dio como resultado de la ejecucin de la
sentencia.
En la siguiente parte, en donde se declara el arreglo bidimensional Datos de tipo Object estamos
preparando para realizar la consulta y recuperar todos y cada uno de los valores que tenga en la
tabla de mi base de datos. Recuerda que la tabla tiene un aspecto bidimensional, por eso se
declara la instancia Datos de la misma forma.
Se realiza la sentencia con el mdodo de executeQuery() y me arroja otra vez un resultset, esta
rs de tipo resultset, me permitir navegar en cada una de las celda de la tabla que me genere
como resultado de la consulta. Y con un ciclo WHILE, que lo utilizamos para recorrer cada fila de
la tabla que me gener como resultado. El mtodo rs.nextInt, permite leer cada rengln hasta
que ya no quede ninguno
Dentro del ciclo While, llenaremos el arreglo Bidimensional Datos de tipo Object, accediendo a
cada campo que me arroja el resultset, claro est que el parmetro que se tiene entre parntesis,
debe contener el nombre del campo al que se quiere recuperar la informacin.

16

El mtodo LlenarTabla, este mtodo nos permite desplegar el resultset generado por la consulta
realizada en el mtodo anterior. Solo que aqu se manipula un componente con la misma
estructura que un resultset. El componente es un JTable.
Se definen las columnas, se manda llamar al mtodo de ObtenerDatos, declado en esta clase,
para poder recibir el resultado y lo pueda asignar a la tabla.
Se declara un modelo de tabla por default para respetar la estructura bidimensional. Y se le
mandan los dos parmetros que se definieron en el mtodo anterior. Se regresa el modelo de
tabla segn sean los resultados y las columnas.

17

Ventanas
Menu.Java
Est clase es un JFrame. Ya lo hemos visto en las sesiones pasadas. As que agregamos un
JFrame que se llame Menu. Le agregamos un MenuBar, le quitamos el men de Edit,
Modificamos el texto del men File y se lo cambiamos a Archivo. Le agregamos dos MenuItem.
Al primero le cambiamos el texto a Agregar Tareas, y al segundo Mostrar Tareas. Verifica que la
pantalla la tengas como en la figura que sigue.

Una vez que ya tengas lista la pantalla de Men, dale clic derecho al men de Agregar Tareas,
y sigue las opciones de: Events->Action->ActionPermormed. Y desde ah mandaremos llamar
el JFrame de Registro; tecleando el cdigo siguiente:

Una vez concluido el cdigo anterior; dale clic derecho al men de Mostrar Tareas, y sigue las
opciones de: Events->Action->ActionPermormed. Y desde ah mandaremos llamar el JFrame
de Consultar; tecleando el cdigo siguiente:

18

Quiz te marque errores en Registro y en Consultar, es porque todava no hemos generado los
JFrame de cada uno de ellos.
Antes de iniciar con la siguiente ventana, que es la ventana de Registro; debemos aprender un
poco acerca del manejo de calendarios dentro de ambiente Swing de Java. Para ello, debemos
ingresar al siguiente link y descargar el .JAR que me permite insertar los componentes que
manejan las fechas. Cuando lo descarguen, agreguen el .JAR en su carpeta de proyectos.
Link para descargar el jcalendar
http://www.java2s.com/Code/Jar/j/Downloadjcalendar133jar.htm
Una vez que hayan descargado el .JAR y lo hayan agregado en su carpeta del proyecto; ingresen
al siguiente link que les dar unas instrucciones sobre cmo agregar los componentes necesarios
para nuestro proyecto. No quise documentar esta parte, porque sera algo diferente que a
ustedes les servira como descanso positivo. Vaya concepto, pero creo que es el que mejor se
le acomoda jejeje.
Link para agregar el jcalendar.jar al proyecto
http://pedrosantosamado.blogspot.mx/2010/08/como-agregar-jcalendar-netbeans.html

Ya que hayan agregado la librera del JCalendar a su proyecto, tengan en cuenta los dos
elementos principales que vamos a manejar en el presente proyecto. Como se muestra en la
siguiente imagen, son dos elementos que hay que agregarlos: JCalendar y el JDateChooser.
Esos dos elementos son de tipo calendario, sin embargo el primero muestra el calendario
completo y el segundo lo muestra de forma desplegable. Esos dos se agregan al momento de
agregar las libreras (Ver imagen 4 de vnculo anterior).

19

Ya cuando hayan seleccionado los dos componentes, le dan Next (Siguiente) y les aparecer la
siguiente pantalla. En ella seleccionen la opcin de Swing Controls (Controles Swing). Es en esa
parte en la que aparecern los dos componentes que hemos seleccionado en el paso anterior.
Es importante que verifiques en dnde vas a colocar los componentes, porque desde ah los va
a insertar en los siguientes formularios.

20

Ya que le diste clic en Finish, dentro de tu proyecto, en la ventana de Palette (Paleta) de


componentes, vers los dos componentes como en la siguiente figura. En caso de que no te
aparezcan, te habras brincado un paso, as que debes volver a revisar.

21

Registro.Java
Agregamos un JFrame llamado Registro, dentro del paquete de Ventanas.
Ya teniendo el JCalendar y el JDateChooser, ahora si agregamos los componentes al JFrame
de Registro: Etiquetas (Labels) para: Registro de Tareas, Materia, Docente, Descripcin y Fecha.
Para Materia y Docente, agregar un TextField (Campo de Texto), para Descripcin un
TextArea(rea de Texto), y para Fecha, selecciona el JDateChooser. Agrega solo el Botn de
Aceptar.
La ventana debe tener ms o menos el mismo diseo como en el de la imagen.

22

Damos clic derecho en el botn de Aceptar, y seleccionamos las siguientes opciones: Events>Action->ActionPerformed. Y tecleamos el siguiente cdigo.

Sealaremos dos cosas de este cdigo.


1. La variable fecha es de tipo String, y el formato de fecha de MySQL, aunque es de tipo
Date, lo maneja como si fuera un String, aunque con el formato de ao-mes-dia (yyyyMM-dd). En ese regln se implementa el formato que requiere el MySQL.
2. En el regln de con.InsertarTareas, se manda llamar al mtodo de InsertarTareas,
previamente escrito en las clases anteriores, mandando los parmetros en orden a cmo
sern recibidos en el mtodo. Es preciso que revises esta parte.
Consultar.Java
Agregamos, un nuevo JFrame en el paquete de ventanas, llamado Consultar. En este JFrame
agregamos los siguientes componentes: Etiqueta (Label) para: Tareas, un JTable con 5
columnas y solo el Botn. Al botn, le podrs Modificar como Texto.
Dale clic derecho a la tabla y selecciona la opcin de Cambiar Nombre de Variable (Change
Variable Name) y le pones tblconsultas.
La ventana debe tener ms o menos el mismo diseo como en el de la imagen.
23

Una vez teniendo la interfaz, damos clic en Source y declararemos 5 atributos que refieren a
cada uno de los valores que vamos a ingresar a la base de datos. Observa en el cdigo y escribe
los atributos de acuerdo a los tipos que se sealan, eso se debe respetar porque son del tipo que
se definieron en la base datos. Adems de una variable de tipo booleano.

Regresa a la pantalla de diseo y dale clic a cualquier lugar del JFrame, y sigue las siguientes
opciones: Events->WindowsFocus->WindowGainedFocus, para teclear el cdigo de la
siguiente imagen. Cabe mencionar que este evento se ejecuta cuando el JFrame est recibiendo
el Cursor una vez que se carga en memoria y se empieza a visualizar.

En este cdigo, se manda llamar al mtodo de LlenarTabla y le mandamos el nombre de la tabla


que tenemos en el JFrame. El mtodo se encargar de ejecutarse y de mandar los resultados.
Regresamos al Diseo del JFrame Consultar, y damos clic en el botn de Modificar, siguiendo
las siguientes opciones: Events->Action->ActionPerformed. Se abrir la ventana de cdigo y
ah se teclea el cdigo de la imagen siguiente.

24

En este cdigo, lo nico que se hace es declaran una instancia de Modificar, y le modificamos
los atributos declarados en el JFrame de Modificar. Cada atributo corresponde a los campos de
la tabla de la base de datos. Quiz ahorita marque error, porque no tenemos el JFrame Modificar,
pero podemos continuar. Cada uno de los atributos recibe valores de cada celda de la tabla.
Nota: El ejercicio est validado para que se seleccione un regln de la tabla ya cuando
est en ejecucin el programa. En caso de que no se seleccione, provocar una Excepcion.
Modificar.Java
Agregamos un JFrame llamado Modificar, dentro del paquete de Ventanas. Y agregamos los
componentes al JFrame de Modificar: Etiquetas (Labels) para: Modificar Tareas, Materia,
Docente, Descripcin y Fecha. Para Materia y Docente, agregar un TextField (Campo de Texto),
para Descripcin un TextArea(rea de Texto), y para Fecha, selecciona el JCalendar. Agrega
solo el Botn de Aceptar.

Una vez teniendo la interfaz, damos clic en Source y declararemos 5 atributos que refieren a
cada uno de los valores que vamos a ingresar a la base de datos. Observa en el cdigo y escribe

25

los atributos de acuerdo a los tipos que se sealan, eso se debe respetar porque son del tipo que
se definieron en la base datos.

Regresa a la pantalla de diseo y dale clic a cualquier lugar del JFrame, y sigue las siguientes
opciones: Events->WindowsFocus->WindowGainedFocus, para teclear el cdigo de la
siguiente imagen. Cabe mencionar que este evento se ejecuta cuando el JFrame est recibiendo
el Cursor una vez que se carga en memoria y se empieza a visualizar.

Con el cdigo de la imagen, mostramos en los componentes de los cuadros de texto, los valores
que recibieron los atributos cuando mandaron llamar la pantalla de Modificar desde la pantalla
de Consultar.
Damos clic derecho en el botn de Aceptar, y seleccionamos las siguientes opciones: Events>Action->ActionPerformed. Y tecleamos el siguiente cdigo.

En el regln de con.ModificarTareas, se manda llamar al mtodo de ModificarTareas,


previamente escrito en las clases anteriores, mandando los parmetros en orden a cmo sern
recibidos en el mtodo. Es preciso que revises esta parte.

Con esto hemos terminado con la codificacin. Ahora s, podemos ejecutar nuestro programa.
Las pantallas en ejecucin se muestran a continuacin. Estn acomodadas en orden en que se
deben operar. Suerte con tu aplicacin.
Ejecucin
26

Principal

Agregar Tarea

27

Ver Tareas Ingresadas

Seleccionas un regln de la tabla y das clic en Modificar

28

Modificar Tareas:

Mostrar Tareas:

29

Você também pode gostar