Está en la página 1de 13

UNIDAD 8: JAVA JSP INTRODUCION A LAS BASES DE DATOS TEMA 7: JAVA JSP MYSQL CONSULTA O DESPLIEGUE O SELECCION Existen

una serie de operaciones y procesos que son muy comunes contra una tabla en una base de datos en disco, la mas comn es desplegar todos los renglones de la tabla que estan almacenados en disco, a este proceso le llamaremos SELECCION, consulta o despliegue. Como se indico anteriormente la comunicacin con la base de datos se tendran que dar usando el lenguaje especializado de bases de datos llamado SQL(structured query language), la instruccin sql que se usa para resolver este problema tiene el siguiente formato: SELECT [listacampos, * o ALL] FROM TABLA; El procedimiento que se intenta seguir cuando se construya un programa jsp que tenga que manipular una tabla en disco debera seguir los siguientes pasos: 1.- Crear una coneccin o enlace a la base de datos. 2.- Abrir la coneccin a la base de datos. 3.- Crear el enlace y cargarlo con la instruccion sql 4.- Crear el RESULTSET y cargarlo 5.- Cargar un objeto table de html con el RESULTSET 6.- Procesar el table de html 7.- Cerrar rsultset, statement, driver o coneccin prog41 jsp
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <% // declarando y creando objetos globales Connection canal = null; ResultSet tabla= null; Statement instruccion=null; String strcon = "jdbc:mysql://localhost/mibase?user=lauro&password=laurosoto";

if(request.getParameter("OK") != null) { // abriendo canal o enlace en su propio try-catch try { Class.forName("com.mysql.jdbc.Driver").newInstance(); canal=DriverManager.getConnection(strcon); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; //leyendo tabla en disco y pasandola al resultset try { tabla = instruccion.executeQuery("select * from mitabla"); // mandando resultset a una tabla html out.println("<TABLE Border=10 CellPadding=5><TR>"); out.println("<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th></TR>"); // ciclo de lectura del resultset while(tabla.next()) { out.println("<TR>"); out.println("<TD>"+tabla.getString(1)+"</TD>"); out.println("<TD>"+tabla.getString(2)+"</TD>"); out.println("<TD>"+tabla.getString(3)+"</TD>"); out.println("<TD>"+tabla.getString(4)+"</TD>"); out.println("</TR>"); }; // fin while out.println("</TABLE></CENTER></DIV></HTML>"); // cerrando resultset tabla.close(); instruccion.close();canal.close();} //fin try no usar ; al final de dos o mas catchs catch(SQLException e) {}; };

// construyendo forma dinamica out.println("<FORM ACTION=prog41.jsp METHOD=post>"); out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=CONSULTA><BR>"); out.println("</FORM>"); %>

Corrida:

notas: 1.- revisar con cuidado el programa, proque como todo buen programa lleva incluida mucha documentacin o explicacin. 2.- Se sigue el procedimiento generico para procesar tablas 3.- Observar y siempre incluir los import's indicados. 4.- Se empieza creando las variables globales a ocupar y abriendo la coneccin a la base de datos,

5.- Se crea el enlace y se carga el resultset(o tabla en memoria) con la instruccin sql y la coneccion, aqui es necesario entender que existen varias maneras de hacer este proceso. 6.- Luego se crea el resultset(tabla) y se cargo con toda la base de datos en disco 7.- Posteriormente se carga el TABLE DE HTML con el resultset. 8.- Para visitar o procesar todos los renglones de la tabla del dataset se usa un ciclo while, y el metodo RESULTSET.NEXT() y por el nombre se ve que existen otros metodos utiles para navegar por todos los renglones de resultset, tales como last(), prior() etc. 9.- Para procesar un dato, celda o columna de un renglon cualesquiera se usa el siguiente metodo RESULTSET.GETSTRING(numerocolumna o nombrecolumna). 10.- ES MUY IMPORTANTE ESTUDIAR TODOS LOS METODOS DEL RESULTSET PORQUE LES FACILITARA MUCHOS PORBLEMAS DE MANIPULACION DE TABLAS, CONSULTAR LA DOCUMENTACION DE SDK DE JAVA. 11.- observar tambien que los objetos resultset, statement y drivermanager(coneccin), deben cerrarse al final del programa, y se cierran en el mismo orden como fueron abiertos. 12- mas claro an, NO OLVIDAR USAR LOS TRES CLOSE() que puse en el programa ejemplo. TAREA JAVA JSP MYSQL 1.- construir y desplegar una primera base de datos que contenga la primera tabla que disearn en el tema de tablas. 2.- Construir una segunda base de datos que contenga cuando menos tres de las tablas ya diseadas y desplegar cualquiera de ellas usando una sola forma html, donde el usuario selecciona cual quiere desplegar.

Insertar un Registro en la Base de Datos


Form_Insertar.jsp
Form_Insertar.jsp

muestra un formulario en el que introduciremos los campos del nuevo libro. En la parte inferior de la pgina hay en enlace para abortar la solicitud.

Propsito de la Pgina Form_Insertar.jsp El propsito de esta pgina es producir una pgina Web con un formulario que el usuario rellena con los datos de un libro. El usuario podra entonces enviar los datos del formulario para su procesamiento transfiriendo el control a la pgina o abortar el proceso seleccionando un enlace de vuelta a la pgina Index.jsp. En la siguiente figura podemos ver un ejemplo de la pgina Form_Insertar.jsp:

Aspecto de la Pgina Form_Insertar.jsp Este cdigo HTML crea el aspecto de la pgina con un enlace a la pgina Index.jsp, etiquetado como "Volver a la Pgina Inicial [el libro no se aadir]" en la parte inferior de la pgina:
<%@ page language="java" import="java.util.*, libreria.*" %> <html> <head> <title>Librera: Insertar un nuevo libro</title> </head> <body bgcolor="#ffffee"> <h1><center>Librera: Insertar un nuevo libro</center></h1> -- Aqu va el cdigo que muestra el formulario -<hr> <center> <destacar><a href="Index.jsp">Volver a la Pgina Inicial [el libro no se aadir]</a></destacar> </center> </body> </html>

Dibujar el Formulario Este cdigo HTML mezclado con cdigo Java crea un formulario cuya accin es "postear" los datos del nuevo libro que hay en los campos de entrada a la pgina :
<form method="post" action="Insertar.jsp">

Luego se muestra una tabla; en la columna izquierda de la tabla se muestran los nombres de los campos; la columna derecha contiene los campos de entrada:
<table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>ISBN:</th> <td><input name="isbn" type="text"></td> </tr> <tr> <th>Editorial:</th> <td><input name="editorial" type="text"></td> </tr> <tr> <th>Autor:</th> <td><input name="autor" type="text"></td> </tr> <tr> <th>Categora:</th>

<td><input name="categoria" type="text"></td> </tr> <tr> <th>Ttulo:</th> <td><input name="titulo" type="text"></td> </tr> <tr> <th>Ubicacin:</th> <td><input name="ubicacion" type="text"></td> </tr> </table>

Luego se define un campo oculto que simula la pulsacin del botn submit cuando se pulsa la tecla return:
<input name="pagemode" type="hidden" value="submit">

Luego se muestra el botn de envo del formulario etiquetado "Aadir el nuevo libro":
<input type="submit" value="Aadir el nuevo libro">

Cuando se pulsa el botn de envo, se pasan los parmetros isbn, editorial, autor, categoria, titulo y ubicacion a la pgina Cdigo Completo de la Pgina Form_Insertar.jsp
<%@ page language="java" import="java.util.*, libreria.*" %> <html> <head> <title>Librera: Insertar un nuevo libro</title> </head> <body bgcolor="#ffffee"> <h1><center>Librera: Insertar un nuevo libro</center></h1> <form method="post" action="Insertar.jsp"> <table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>ISBN:</th> <td><input name="isbn" type="text"></td> </tr> <tr> <th>Editorial:</th> <td><input name="editorial" type="text"></td> </tr> <tr> <th>Autor:</th> <td><input name="autor" type="text"></td> </tr> <tr> <th>Categora:</th> <td><input name="categoria" type="text"></td> </tr>

<tr> <th>Ttulo:</th> <td><input name="titulo" type="text"></td> </tr> <tr> <th>Ubicacin:</th> <td><input name="ubicacion" type="text"></td> </tr> </table> <br> <center> <input name="pagemode" type="hidden" value="submit"> <input type="submit" value="Aadir el nuevo libro"> </center> <hr> <center> <destacar><a href="Index.jsp">Volver a la Pgina Inicial [el libro no se aadir]</a></destacar> </center> </body> </html>

Insertar.jsp
Esta pgina muestra los campos que recibe del nuevo libro. Luego intenta aadir el nuevo libro a la base de datos y muestra el xito o el fracaso en el intento. En la parte inferior de la pgina hay un enlace a la pgina Index.jsp.

Propsito de la Pgina Insertar.jsp El propsito de esta pgina es producir una pgina Web con un tabla que muestre los parmetros del libro que se le han pasado desde la pgina Form_Insertar.jsp; realmente realiza la actualizacin de la base de datos; muestra si la base de datos se actualiz correctamente o no, y espera hasta que el usuario seleccione el enlace de vuelta a Index.jsp. La siguiente figura muestra un ejemplo de la pgina Insertar.jsp:

Aspecto de la Pgina Insertar.jsp Este cdigo HTML genera el aspecto de la pgina con un enlace a Index.jsp en la parte inferior de la pgina:
<html> <head> <title>Librera -- Insertando un nuevo Libro</title> </head> <body bgcolor="#ffffee"> <h1><center>Librera -- Insertando un nuevo Libro</center></h1> -- aqu va el cdigo para mostrar la tabla --- aqu va el cdigo para actualizar la base de datos y mostrar el xito o el fracaso de la operacin -<hr>

<center> <destacar><a href="Index.jsp">Volver a la Pgina Inicial</a></destacar> </center> </body> </html>

Mostrar la Tabla Este cdigo HTML mezclado con cdigo Java muestra la tabla; en la columna izquierda se muestran los nombres de los campos; la columna derecha contiene los datos del nuevo libro recuperados desde los parmetros:
<table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>ISBN:</th> <td><%= request.getParameter ("isbn") %></td> </tr> <tr> <th>Editorial:</th> <td><%= request.getParameter ("editorial") %></td> </tr> <tr> <th>Autor:</th> <td><%= request.getParameter ("autor") %></td> </tr> <tr> <th>Categora:</th> <td><%= request.getParameter ("categoria") %></td> </tr> <tr> <th>Ttulo:</th> <td><%= request.getParameter ("titulo") %></td> </tr> <tr> <th>Ubicacin:</th> <td><%= request.getParameter ("ubicacion") %></td> </tr> </table>

Actualizar la Base de Datos y Mostrar el xito o el Fracaso Este cdigo Java mezclado con cdigo HTML recupera el ejemplar de libreria.LibrosBD almacenado en el atributo BaseDatos de la aplicacin por libreria.ContextListener:
LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");

Esto construye un objeto Libro con los parmetros pasados desde Form_Insertar.jsp:

Libro libro = new Libro ( null, request.getParameter ("isbn"), request.getParameter ("editorial"), request.getParameter ("autor"), request.getParameter ("categoria"), request.getParameter ("titulo"), request.getParameter ("ubicacion") );

Luego se aade el libro a la base de datos:


int rowsAffected = librosBD.insertarLibro (libro);

Si slo se ve afectada una fila por la actualizacin de la base de datos se muestra el mensaje "Se ha Aadido a la Base de Datos" en color verde, si no es as, se muestra el mensaje "No se Pudo Aadir el Registro" en color rojo:
if (rowsAffected == 1) { %> <center> <h2><font color="#00cc00">Se ha aadido a la Base de Datos</font></h2> </center> <% } else { %> <center> <h2><font color="#cc0000">No se ha podido Aadir el registro</font></h2> </center> <% } %>

Cdigo Completo de la Pgina Insertar.jsp


<%@ page language="java" import="java.util.*, libreria.*" %> <html> <head> <title>Librera -- Insertando un nuevo Libro</title> </head> <body bgcolor="#ffffee"> <h1><center>Librera -- Insertando un nuevo Libro</center></h1> <table align="center" cellpadding="2" cellspacing="2" border="1" width="80%" bgcolor="#dddddd"> <tr> <th>ISBN:</th> <td><%= request.getParameter ("isbn") %></td> </tr> <tr>

<th>Editorial:</th> <td><%= request.getParameter </tr> <tr> <th>Autor:</th> <td><%= request.getParameter </tr> <tr> <th>Categora:</th> <td><%= request.getParameter </tr> <tr> <th>Ttulo:</th> <td><%= request.getParameter </tr> <tr> <th>Ubicacin:</th> <td><%= request.getParameter </tr> </table> <%

("editorial") %></td>

("autor") %></td>

("categoria") %></td>

("titulo") %></td>

("ubicacion") %></td>

LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos"); Libro libro = new Libro ( null, request.getParameter ("isbn"), request.getParameter ("editorial"), request.getParameter ("autor"), request.getParameter ("categoria"), request.getParameter ("titulo"), request.getParameter ("ubicacion") ); int rowsAffected = librosBD.insertarLibro(libro); if (rowsAffected == 1) { %> <center> <h2><font color="#00cc00">Se ha aadido a la Base de Datos</font></h2> </center> <% } else { %> <center> <h2><font color="#cc0000">No se ha podido Aadir el registro</font></h2> </center> <% } %> <hr> <center> <destacar><a href="Index.jsp">Volver a la Pgina Inicial</a></destacar> </center> </body> </html>

También podría gustarte