Inicio » Uncategorized » Tutorial de JSP (22): Altas, Bajas y Modificaciones en una tabla de una base de datos mySQL con JSP.

Tutorial de JSP (22): Altas, Bajas y Modificaciones en una tabla de una base de datos mySQL con JSP.


Realizaremos en esta entrada un ejercicio de utilización de JSP para resolver la creación, modificación y eliminación de registros en una tabla denominada libros de una base de datos denominada biblioteca diseñada en mySQL. El ejemplo es un mero ejercicio didáctico de cómo utilizar JSP, advirtiendo que dicho ejercicio en sentido estricto habría que resolverlo con cierto carácter científico con ayuda de un servlet y respetando el Modelo Vista Controlador (que dejaremos para más adelante).

La tabla es la que sigue,

Image1con

Image2

Iniciamos seguidamente una sesión de Netbeans y hacemos desde el menú principal Archivo, Proyecto nuevo, Java Web, Web Application, llamamos al proyecto GesTablaJSP y sustituimos el archivo index.jsp plantilla por el siguiente código:


<%--
 Document&nbsp;&nbsp; : index
 Created on : 25-dic-2012, 10:05:15
 Author&nbsp;&nbsp;&nbsp;&nbsp; : Jtaguaa
 --%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
 html>
 <html>
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Actualizar, Eliminar, Crear registros.</title>
 </head>
 <body>
<form action="AECTabla.jsp" method="post" name="Actualizar"></form>
 <table>
 <tr>
 <td>ISBN</td>
 <input type="text" name="isbn" value="" size="40"/>
 </tr>
 <tr>
 <td>Título</td>
 <input type="text" name="titulo" value="" size="50"/>
 </tr>
 <tr><td> Action </td>
 <td>
 <input type="radio" name="Action" value="Actualizar" /> Actualizar
 <input type="radio" name="Action" value="Eliminar" /> Eliminar
 <input type="radio" name="Action" value="Crear" checked /> Crear
 </td>
 </tr>
 <input type="SUBMIT" value="Submit" />
 </tr>
 </table>
 </form>
 </body>
 </html>

donde puede verse que se trata de código HTML con JSP que describe un formulario. Esto es lo que más tarde en el Modelo, Vista Controlador será la “Vista”, es decir, la presentación de los datos de los distintos campos de la tabla.

La ejecución de dicho archivo presenta en el cliente o en el browser la pantalla

Image3

Si en esta pantalla pulsamos Submit enviaremos una petición al servidor de la página AECTabla.jsp, amén de la cabecera de la petición, enviaremos los tres variables implicadas en el formulario, es decir:  isbn, titulo y Action.

Tenemos pues que crear en el mismo proyecto otro archivo jsp que resuelva la cuestión del alta, modificación o eliminación de los registros. Para ello, una vez seleccionado el proyecto, hacemos click con el botón derecho para mostrar el menu contextual

Image8

Damos nombre AECTabla al nuevo archivo jsp y sustituimos seguidamente el código de la plantilla por el siguiente,

<%--
Document&nbsp;&nbsp; : AECTabla
Created on : 25-dic-2012, 10:11:06
Author&nbsp;&nbsp;&nbsp;&nbsp; : Jtaguaa
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import = "java.sql.*" %>

<%
/* Paso 1) Obtener los datos del formulario */
String ls_isbn = request.getParameter("isbn");
String ls_titulo = request.getParameter("titulo");
String ls_action = request.getParameter("Action");

/* Paso 2) Inicializar variables */
String ls_result = "Base de datos actualizada...";
String ls_query = "";
String ls_dburl = "jdbc:mysql://127.0.0.1:3306/biblioteca";
String ls_usuario = "root";
String ls_password = "";
String ls_dbdriver = "com.mysql.jdbc.Driver";

/* Paso 3) Crear query&nbsp; */
if (ls_action.equals("Crear")) {
ls_query = " insert into libros (isbn, titulo)";
ls_query += " values (";
ls_query += "'" + ls_isbn + "',";
ls_query += "'" + ls_titulo + "')";
}

if (ls_action.equals("Eliminar")) {
ls_query = " delete from libros where isbn = ";
ls_query += "'" + ls_isbn + "'";
}

if (ls_action.equals("Actualizar")) {
ls_query = " update libros";
ls_query += " set titulo= " + "'" + ls_titulo + "',";
ls_query += " where isbn = " + "'" + ls_isbn + "'";
}

/* Paso4) Conexión a la base de datos */
Connection l_dbconn = null;

try {
Class.forName(ls_dbdriver);
/*&nbsp; getConnection(URL,User,Pw) */
l_dbconn = DriverManager.getConnection(ls_dburl,ls_usuario,ls_password);

/*Creación de SQL Statement */
Statement l_statement = l_dbconn.createStatement();
/* Ejecución de SQL Statement */
l_statement.execute(ls_query);
} catch (ClassNotFoundException e) {
ls_result = " Error creando el driver!";
ls_result += " <br/>" + e.toString();
} catch (SQLException e) {
ls_result = " Error procesando el SQL!";
ls_result += " <br/>" + e.toString();
} finally {
/* Cerramos */
try {
if (l_dbconn != null) {
l_dbconn.close();
}
} catch (SQLException e) {
ls_result = "Error al cerrar la conexión.";
ls_result += " <br/>" + e.toString();
}
}
%>
html>
<html>
<head><title>Updating a Database</title></head>
<body>

La siguiente instrucción fue ejecutada:
<br/><br/>
<%=ls_query%>
<br/><br/>

El resultado fue:
<br/><br/>
<%=ls_result%>
<br/><br/>

<a href="index.jsp">Entre otro valor</a>
</body>
</html>

Para dar de alta un libro entraremos la información correspondiente al libro cuyo título es Java Servlet Programming (2ed) y el isbn 0596000405, es decir

Image4

Si pulsamos “Submit”,

Image5

y vemos con phpAdmin que se ha creado un resgistro.

Image9

De forma similar se resolvería la Actualización o Eliminación del registro.

Obsérvese que no se han previsto, de manera razonable,  las incidencias correspondientes a

  1. La Alta de un registro ya existente.
  2. La Baja de un registro inexistente.
  3. La Actualización de un registro no existente.

Se le sugiere al lector que estudie estos casos y modifique convenientemente el archivo AECTabla. Como ayuda, intente controlar el objeto e del tipo SQLException a través del método e.getErrorCode(), y a partir de ahí muestre un mensaje más específico.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 34 seguidores

%d personas les gusta esto: