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

TEMA 6: JDBC SQL RESULTSET JAVA JSP

El problema es comunicar un programa o aplicacin con una base de datos y ms que


comunicar se pretende que el programa o aplicacin realice una serie de procesos u
operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una
base de datos.
El modo de comunicarse entre nuestro programa o aplicacin y la base de datos (ya sea
fsica o un dbserver) implica que ambos manejen un lenguaje de programacin comn, es
decir no se puede mandar una instruccin en csharp, o en basic o pascal a la base de datos y
adems esperar que esta ultima la entienda ( para entender esto, una razn muy sencilla es
que la base de datos tendra que conocer o comprender todos los lenguajes de
programacin), para resolver este problema de comunicacin es que se usa un lenguaje
comn de bases de datos que tanto los lenguajes de programacin existentes como las bases
de datos entienden, este lenguaje comn de bases de datos es el SQL (structured query
languaje) o lenguaje estructurado de consultas.
La pregunta es ahora como mandamos las instrucciones sql a la base de datos, la respuesta
son los siguientes OBJETOS.
MYSQL CONNECTORJ.- Es un objeto(clase) especializado que se utiliza para enlazar e
intercambiar informacion entre MYSQL y JAVA.
Esta clase la debern de bajar de http://dev.mysql.com/downloads/connector/j/3.0.html
Abrirlo con el winzip y solo buscar y sacar una clase que se llama MYSQL-
CONNECTOR-JAVA-3.0.11-STABLE-BIN.JAR
Agregar a la librera. Es muy importante que este paso lo realicen de la manera ms
completa posible.
OBJETO CONNECTION:- Objeto que se utiliza para establecer la conexin o enlace
entre el programa jsp y la base de datos en mysql.
OBJETO RESULTSET:- Es la representacin en memoria de las tablas de la base de
datos en disco, se puede entender como una tabla virtual, recordar que generalmente todos
los procesos que se realicen con la tabla (insertar registros, eliminar registros, etc.) se
realizaran realmente contra un resulset y no provocaran ningn cambio en la tabla fsica en
disco, resulset tiene un conjunto de mtodos muy tiles y muy usados para el proceso de los
renglones de la tabla virtual.
OBJETO STATEMENT:- Este objeto y sus dos mtodos executequery(solo para select de
sql) y executeupdate( solo para insert, update y delete de sql) son los mtodos que se
utilizaran para comunicarse con la tabla fsica en disco.

Ejemplo:

// declarando y creando objetos globales

Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon =
"jdbc:mysql://localhost:3036/mibase?user=root&password=admin";
// 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) {};

TEMA 7: JAVA JSP MYSQL CONSULTA O DESPLIEGUE O SELECCIN
Existen una serie de operaciones y procesos que son muy comunes contra una tabla en una
base de datos en disco, la ms comn es desplegar todos los renglones de la tabla que estn
almacenados en disco, a este proceso le llamaremos SELECCIN, consulta o despliegue.
Como se indico anteriormente la comunicacin con la base de datos se tendrn 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 deber seguir los siguientes pasos:
1.- Crear una conexin o enlace a la base de datos.
2.- Abrir la conexin a la base de datos.
3.- Crear el enlace y cargarlo con la instruccin 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=root&password=laurosot";
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 ms 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, porque como todo buen programa lleva incluida
mucha documentacin o explicacin.
2.- Se sigue el procedimiento genrico para procesar tablas
3.- Observar y siempre incluir los import's indicados.
4.- Se empieza creando las variables globales a ocupar y abriendo la conexin 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
conexin, aqu 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 mtodo RESULTSET.NEXT() y por el nombre se ve que existen otros mtodos tiles
para navegar por todos los renglones de resultset, tales como last(), prior() etc.
9.- Para procesar un dato, celda o columna de un rengln cualesquiera se usa el siguiente
mtodo RESULTSET.GETSTRING(numerocolumna o nombrecolumna).
10.- ES MUY IMPORTANTE ESTUDIAR TODOS LOS MTODOS DEL RESULTSET
PORQUE LES FACILITARA MUCHOS PROBLEMAS DE MANIPULACIN DE
TABLAS, CONSULTAR LA DOCUMENTACIN DE SDK DE JAVA.
11.- observar tambin que los objetos resultset, statement y drivermanager(conexin),
deben cerrarse al final del programa, y se cierran en el mismo orden como fueron abiertos.
12- ms claro an, NO OLVIDAR USAR LOS TRES CLOSE() que puse en el programa
ejemplo.
TAREA J AVA J SP MYSQL
1.- construir y desplegar una primera base de datos que contenga la primera tabla que
disearon 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.

TEMA 8: INSERCION O ADICION DE REGISTROS SQL INSERT JAVA JSP
Insertar o agregar registros o renglones nuevos a una tabla en disco, es un proceso sencillo
que usa la siguiente instruccin sql:
INSERT INTO TABLA(CAMPO1,CAMPO2..) VALUES(VALOR1,VALOR2..);
Prog42.jsp

<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %>
<%
if(request.getParameter("GRABAR") != null)
{
// objetos de enlace
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon =
"jdbc:mysql://localhost/mibase?user=root&password=laurosoto";
// 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) {};
//cargando los campos a grabar
// excepto clave porque en mysql es de tipo auto-increment
String nombre = request.getParameter("NOMBRE");
int edad = Integer.parseInt(request.getParameter("EDAD"));
float estatura
=Float.parseFloat(request.getParameter("ESTATURA"));
// insert into tabla(nombre,edad,estatura) values('juan', 15,
1.88);
String q="insert into mitabla(nombre,edad,estatura) values(\""
+nombre+"\","+edad+","+estatura+"); ";
try {
// agregando renglon (insert)

int n=instruccion.executeUpdate(q);
//avisando que se hizo la instruccion
out.println("REGISTRO INSERTADO");
} catch(SQLException e) {out.println(e);};
try{
// tabla.close();
instruccion.close();
canal.close();
} catch(SQLException e) {out.println(e);};
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog42.jsp METHOD=post>");
out.println("NOMBRE :<INPUT TYPE=TEXT NAME=NOMBRE><BR>");
out.println("EDAD :<INPUT TYPE=TEXT NAME=EDAD><BR>");
out.println("ESTATURA:<INPUT TYPE=TEXT NAME=ESTATURA><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=GRABAR VALUE=INSERTAR>
<BR>");
out.println("</FORM>");
%>
Corrida:

Corrida prog41.jsp (consulta)

OBSERVAR QUE EXISTEN DOS METODOS PARA EL OBJETO STATEMENT:
a) STATEMENT.EXECUTEQUERY() USARLO PARA SQL SELECT
b) STATEMENT.EXECUTEUPDATE() USARLO PARA SQL INSERT, UPDATE,
DELETE.
TAREA J AVA J SP MYSQL
1.- construir muchos programas de insercin en las tablas de las bases de datos que tengan
construidas
TEMA 9: BUSQUEDA SQL SELECT JAVA JSP
En este tema se analiza la bsqueda de un registro o rengln determinado en este proceso el
usuario del programa quiere que se despliegue un y solo un registro de informacin
proporcionando un dato de bsqueda generalmente la clave del registro.
La solucin es sencilla, solo usar otra vez la instruccion select, con el siguiente formato:
SELECT [ *, all, campos] FROM TABLA WHERE clave=claveabuscar;
Y RESULTSET.EXECUTEQUERY().


Prog43.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=root&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) {};

// preparando condicion de busqueda
int clave = Integer.parseInt(request.getParameter("CLAVEB"));
// construyendo select con condicion
String q="select * from mitabla where clave="+clave;
// mandando el sql a la base de datos
try { tabla = instruccion.executeQuery(q);
// mandando resultset a 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>");
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("</TR>"); }; // fin while
out.println("</TABLE></CENTER></DIV></HTML>");
} //fin try no usar ; al final de dos o mas catchs
catch(SQLException e) {};
try {tabla.close();instruccion.close();canal.close();} catch(SQLException
e) {};
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog43.jsp METHOD=post>");
out.println("CLAVE BUSCAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=BUSCAR><BR>");
out.println("</FORM>");
%>
nota: no hay nada nuevo es una combinacin de los dos programas anteriores con las
mismas notas, solo se usa un input text para pedir la clave, aunque se puede usar cualquier
campo para buscar.
Tambin recordar que el resultset despus de la busqueda solo queda cargado con el
rengln que el canal se trajo de la base de datos.
Corrida:

Observar que aunque el resultset tenga cuatro campos se pueden desplegar solo los que se
ocupen.
TAREAS PROGRAMACION JAVA JSP
1.- hacer programas de busquedas para las bases y tablas que tengan
TEMA 10: FILTROS JAVA JSP
Otro problema similar al anterior es el de filtros es decir en muchas ocasiones es necesario
obtener informacin acerca de un subconjunto de renglones de la tabla.
Por ejemplo todos los estudiantes que sean mayores de 17 aos, todos los clientes que sean
de Tijuana, etc., a esto le llamamos filtros o condiciones.
Tambin se resuelve de manera similar al anterior, es decir usando la instruccin select etc,
from tabla, where CONDICIN; con RESULTSET.EXECUTEQUERY().
Prog44.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=root&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) {};
// preparando condicion de busqueda
int edad = Integer.parseInt(request.getParameter("EDAD"));
String q="select * from mitabla where edad >="+edad;
// mandando el sql a la base de datos
try { tabla = instruccion.executeQuery(q);
// mandando resultset a 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>");
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("</TR>"); }; // fin while
out.println("</TABLE></CENTER></DIV></HTML>");
} //fin try no usar ; al final de dos o mas catchs
catch(SQLException e) {};
try {tabla.close();instruccion.close();canal.close();} catch(SQLException
e) {};
};

// construyendo forma dinamica
out.println("<FORM ACTION=prog44.jsp METHOD=post>");
out.println("EDAD > =<INPUT TYPE=text NAME=EDAD><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=FILTRAR><BR>");
out.println("</FORM>");
%>
Nota: siguen siendo combinaciones de los programas anteriores pero sera prudente mejor
usar dos combobox uno para la variable, otro para el operador relacional y un text para el
dato y mandar estos tres datos al prog36.jsp pero eso queda de tarea.
Corrida:

TAREAS PROGRAMACION JAVA JSP
1.- preparar programas de filtrado para sus bases de datos, recordar que sus formas html's
deben construirlas con 2 combos y un text, suerte
TEMA 11: OPERACIONES CON CAMPOS JAVA JSP
Este es tambin un caso comn con elementos de una tabla, sin embargo es tambin fcil de
resolver.
Es necesario recordar primero algunas cosas elementales:
1.- Recordar que el numero de columna en una tabla empieza en 1, esto es que para realizar
alguna operacin por ejemplo la columna edad del ejemplo que estamos siguiendo, su
nmero de columna es la 2.
2.- La operacin que se plantee se puede realizar con todos los renglones de la tabla o con
un solo rengln de la tabla(del resultset).
3.- En el ejemplo se realiza la operacin con todos los renglones de la tabla y no olvidar
que se tiene que usar la instruccion sql Update para que la nueva informacin se
actualice en disco, recordar que los cambios que se hacen a una tabla es realmente al
resultset, que a su vez es una tabla o base de datos en la memoria de la maquina del cliente
o usuario es por esta RAZN QUE LOS cambios hay que actualizarlos o pasarlos con
UPDATE a la base de datos en disco.
El siguiente programa le aumenta 50 a todas las edades.
Prog45.jsp

<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %>
<%
if(request.getParameter("OK") != null)
{
// declarando y creando objetos y variables
int edad, clave;
String q;
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon =
"jdbc:mysql://localhost/mibase?user=root&password=laurosoto";
// crando canal o enlace
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) {};
// cargando el resultet
try {
tabla = instruccion.executeQuery("select * from mitabla");
} catch(SQLException e) {};
// operaciones en el resultset
while(tabla.next()){
clave = tabla.getInt(1);
edad =tabla.getInt(3);
edad=edad+50;
// actualizacion a la tabla en disco con update
q="update mitabla set edad= "+edad+ " where clave = "+clave+";";
try{
instruccion.executeUpdate(q);
// cargando nuevo resultset actualizado
tabla = instruccion.executeQuery("select * from mitabla");
// dejando apuntador en renglon apropiado, recordar que volvimos a releer
la tabla y por tanto
// hay que poner el apuntador en el renglon apropiado
tabla.absolute(clave);
}catch(SQLException e) {}; };//fin while
// cerrando todo
try {canal.close();instruccion.close();tabla.close();} catch(SQLException
e) {};
out.println("EDADES AUMENTADAS");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog45.jsp METHOD=post>");

out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=EDAD+50><BR>");
out.println("</FORM>");
%>

Nota: programa autoanotado.


TEMA 12: BAJA O ELIMINACIN SQL DELETE
Eliminacin es otro proceso simple y comn con las bases de datos el modelo que estamos
usando hace este tipo de operaciones muy fciles:
La instruccin sql a usar es: DELETE FROM TABLA WHERE CONDICION
Y RESULTSET.EXECUTEUPDATE()
Prog46.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=root&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) {};
// preparando condicion de eliminacion
int clave = Integer.parseInt(request.getParameter("CLAVEB"));
// construyendo select con condicion eliminacion SQL DELETE
String q="delete from mitabla where clave = "+clave;
// mandando SQL a tabla en disco
try { instruccion.executeUpdate(q);
// avisando
out.println("registro eliminado");
} //fin try no usar ; al final de dos o mas catchs
catch(SQLException e) {}
catch(java.lang.NullPointerException e){};
try {
// no ocupa cerrar tabla(), no se leyo (select) un resultset
// la eliminacion fue directa en disco
instruccion.close();canal.close();} catch(SQLException e) {};
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog46.jsp METHOD=post>");
out.println("CLAVE ELIMINAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=ELIMINAR><BR>");
out.println("</FORM>");
%>
Corridas :
Prog -tabla original


pro46.jsp

prog41.jsp

TAREAS PROGRAMACIN JAVA JSP
1.- construir este proceso para las tablas y bases de datos que tengan construidas.
TEMA 13: EDICION DE REGISTROS SQL UPDATE
Editar registros significa cambiar el contenido de algunos de los campos o columnas por
nueva informacin o para corregir algn error de captura original o para agregar alguna
columna que no exista por modificacin de la tabla o la base de datos.
En general se tiene otro problema de sql UPDATE, sin embargo ahora se tendrn que
construir dos mtodos uno de busqueda normal y otro de actualizacin estos mtodos son:
1.- BSQUEDA: programa normal de bsqueda por clave, pero ahora deber construir
una forma.html dinmica, que contendr un form action apuntando o ejecutndose a
s mismo es decir prog47.jsp, adems tendr todos los input text necesarios para
cargar cada celda del renglon de busqueda.
2.- EDICIN: recoje los datos ya modificados de la forma.html dinamica y realiza
directamente un sql update en la base de datos.
prog47.jsp
<%@ page import="java.io.*, java.util.*, java.net.*, java.sql.*" %>
<%! int clave=0; %>
<%
// codigo del evento BUSQUEDA y recordar construir una nueva forma
dinamica
if(request.getParameter("BUSCAR") != null)
{
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon =
"jdbc:mysql://localhost/mibase?user=root&password=laurosoto";
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) {};
clave = Integer.parseInt(request.getParameter("CLAVEB"));
String q="select * from mitabla where clave="+clave;
try { tabla = instruccion.executeQuery(q);
tabla.next();
out.println("<FORM ACTION=prog47.jsp METHOD=POST>");
out.println("NOMBRE:<INPUT TYPE=TEXT NAME=NOMBRE VALUE= "+
tabla.getString(2)+ "><BR>");
out.println("EDAD:<INPUT TYPE=TEXT NAME=EDAD VALUE= "+
tabla.getString(3)+ "><BR>");
out.println("ESTATURA:<INPUT TYPE=TEXT NAME=ESTATURA VALUE= "+
tabla.getString(4)+ "><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=EDITAR VALUE=EDITAR><BR>");
tabla.close();instruccion.close();canal.close();
} catch(SQLException e) {} catch(Exception ex){};
}; // fin evento buscar
// codigo de evento EDICION
String temp2=request.getParameter("EDITAR");
if(temp2==null)temp2=" ";
if(temp2.compareTo("EDITAR")==0)
{
String nombre,q ;
int edad; float estatura;
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon =
"jdbc:mysql://localhost/mibase?user=lauro&password=laurosoto";
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) {};
try {
tabla = instruccion.executeQuery("select * from mitabla");
} catch(SQLException e) {};
nombre = request.getParameter("NOMBRE");
edad = Integer.parseInt(request.getParameter("EDAD"));
estatura = Float.parseFloat(request.getParameter("ESTATURA"));
q = "UPDATE mitabla SET "+ "NOMBRE='"+ nombre+ "', EDAD="+
edad+",estatura="+estatura+" WHERE clave=" + clave+";";
try{instruccion.executeUpdate(q); }catch(SQLException e) {};
try {tabla.close();instruccion.close();canal.close();} catch(SQLException
e) {};
out.println("REGISTRO EDITADO");
}; // fin evento editar
// construyendo forma dinamica
out.println("<FORM ACTION=prog47.jsp METHOD=post>");
out.println("CLAVE EDITAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=BUSCAR VALUE=BUSCAR ><BR>");
out.println("</FORM>");
%>

Veamos la corrida completa:
(tabla original)

Forma dinmica que construye prog47.jsp

Continua prog47.jsp
Nueva tabla

TAREAS PROGRAMACI ON J AVA J SP

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