UNIDAD 9: JAVA BASES DE DATOS

JAVA TEMA 8: EDICION O MODIFICACION SQL UPDATE

Tambien problema común en base de datos, modificar los datos de un renglón de la tabla es sencillo, porque se usa la instrucción UPDATE de SQL.

Lo dificil es la logica del programa:

Primero construir un programa html de busqueda por clave, que traiga el registro o renglon a modificar.

Segundo construir un primer servlet muy parecido al de busqueda con la unica diferencia que responde con una pagina html que despliega los datos de la tabla pero en un una forma dinamica <FORM> </FORM> esta forma dinamica le permitira al usuario editar o modificar los datos a su antojo, ya modificados los datos en esta forma se llamara a un segundo servlet.

Este segundo servlet captura los datos ya modificados o editados y utiliza la instrucción SQL UPDATE para hacer la actualización de la tabla en disco.

Codigo HTML:

<HTML>
<FORM ACTION=http://192.168.1.133/servlet/prog43 METHOD=POST>
CLAVE A MODIFICAR:<INPUT TYPE=TEXT NAME=CLAVE><BR>
<INPUT TYPE=SUBMIT VALUE=BUSCAR>
</FORM></HTML>

Codigo servlet busqueda y pagina dinamica:

import java.io.*; import java.util.*; import java.net.*; import java.sql.*;
import javax.servlet.*; import javax.servlet.http.*;
public class prog43 extends HttpServlet {
static Connection canal = null;
static ResultSet tabla= null;
static Statement instruccion=null;
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
canal=DriverManager.getConnection("jdbc:odbc:mibase", " ", " ");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {};
response.setContentType("text/html");
//capturando clave a modificar
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
int clave1= temp.intValue();
//buscando y recuperando
try{
tabla= instruccion.executeQuery("Select * from tabla where clave ="+clave1+" ");
//recordar moverse al primer renglon
tabla.next();
PrintWriter pagina =response.getWriter();
pagina.println("<HTML>");
//construyendo forma dinamica, recordar que se insistio en no usar "" en html
pagina.println("<FORM ACTION=http://192.168.1.133/servlet/prog44 METHOD=POST>");
pagina.println("CLAVE:<INPUT TYPE=TEXT NAME=CLAVE VALUE="+tabla.getString(1)+"><BR>");
pagina.println("NOMBRE:<INPUT TYPE=TEXT NAME=NOMBRE VALUE="+tabla.getString(2)+"><BR>");
pagina.println("EDAD:<INPUT TYPE=TEXT NAME=EDAD VALUE="+tabla.getString(3)+"><BR>");
pagina.println("<INPUT TYPE=SUBMIT VALUE=MODIFICAR>");
pagina.println("</FORM></HTML>");
pagina.close();
tabla.close(); } //fin try no usar ; al final de dos o mas catchs
catch(SQLException e) {};
destroy();
try {canal.close();} catch(SQLException e) {};
};//fin dopost
public void destroy() {super.destroy();};
} //fin clase

Segundo servlet que actualiza tabla disco:

import java.io.*; import java.util.*; import java.net.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*;
public class prog44 extends HttpServlet {
static Connection canal = null;
static ResultSet tabla= null;
static Statement instruccion=null;
static int clave=0;
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
canal=DriverManager.getConnection("jdbc:odbc:mibase", " ", " ");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch(java.lang.ClassNotFoundException e){System.out.println("classnotfound");}
catch(SQLException e) {System.out.println("error de enlace canal");}
response.setContentType("text/html");
//cargando los campos a modificar
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
int clave1= temp.intValue();
String nombre = request.getParameter("NOMBRE");
//capturando y conviertiendo edad
temp=Integer.valueOf(request.getParameter("EDAD"));
int edad= temp.intValue();
// y el formato de update es:
// update tabla set campo1=dato, campo2=dato where clave = 300;
// se supone que la clave no se ocupa modificar solo el resto de campos
String q = "UPDATE tabla SET " +
"NOMBRE='" + nombre +
"', EDAD='" + edad +
"' WHERE clave=" + clave1;
try {
// modificando renglon (update)
int n=instruccion.executeUpdate(q);
//avisando que se hizo la instruccion
PrintWriter pagina =response.getWriter();
pagina.println("<HTML>");
pagina.println(n+"YA SE MODIFICO, BACK PARA REGRESAR");
pagina.println("</HTML");
pagina.close(); } //termina try
catch(SQLException e) { System.out.println("error del sql probable mala instruccion sql"); };
destroy();
try {canal.close();} catch(SQLException e) {System.out.println("error el cerrar el canal");};
} ;//fin dopost
public void destroy() {super.destroy();};
}//fin clase prog44

tan tan el curso se acabo y a empezar a construir su proyecto un java servlet que tenga dos tablas basicas y una tabla de relacion 1-kte, suerte.

Politica de Privacidad