Professional Documents
Culture Documents
Codigo.html
<HTML>
<FORM ACTION=http://192.168.1.133/servlet/prog38 METHOD=POST>
</FORM></HTML>
Codigo java
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
response.setContentType("text/html");
pagina.println("<HTML><HEAD><TITLE>MI SERVLET</TITLE></HEAD>");
pagina.println("<TABLE BORDER="+"1"+">");
while(tabla.next()) {
pagina.println("<TR>");
pagina.println("<TD>"+tabla.getString(1)+"</TD>");
pagina.println("<TD>"+tabla.getString(2)+"</TD>");
pagina.println("<TD>"+tabla.getString(3)+"</TD>");
pagina.println("</TABLE></CENTER></DIV></HTML>");
pagina.close();
catch(SQLException e) {};
destroy();
};//fin dopost
} //fin clase
notas:
Se empiezan creando tres variables, una de tipo conección llamado canal que se usara
para enlazar los dos drivers.
La segunda variable de tipo ResultSet, llamada tabla que se cargara con la tabla que esta
en la base de datos, es de recordar que esta tabla(no confundirla con la que esta en
disco) no solo contendra todos los renglones de la tabla en disco, sino tambien toda la
información asociada a esa tabla(cantidad y numero de columnas, tipos de datos, fonts,
etc).
Una instrucción de tipo Statement, que tiene como finalidad contener el codigo SQL
que se usara para comunicarse entre el programa en java y la base de datos en access.
El metodo post() normal que primero usa un try (siguiente nota de abajo) y luego otro
try que crea la instrucción de tipo statement y luego la carga con el SQL, el resultado(la
tabla de access que regresa) la almacenamos en la tabla.
Observar el try que activa el jdbcodbcdriver que usa java, y despues hacer la conección
o enlaze con el odbc de la base, observar lo parametros con comillas en blanco, son el
login y el password de la base hecha en access.
Es de tomar muy en cuenta que variables de tipo ResultSet (tabla ) tienen muchos
metodos que seran muy utiles para el trabajo con tablas, en otras palabras, deberan
estudiar con mucho cuidado la clase ResultSet y sus metodos.
Despues se crea una pagina con una tabla html, para irla cargando con nuestra tabla.
Observar que se usa un ciclo while(tabla.next()) para recorrer todos los renglones de
nuestra tabla, es importante tambien recordar que en cuento llega de regreso la tabla en
access y se carga en nuestra tabla en memoria, un apuntador de renglones queda en la
posición anterior o arriba de todos los renglones, por eso el primer next()(metodo de
resultset), nos lleva al primer renglon real de la tabla.
Es muy importante entender que cuando se abre una sesion o canal entre java y access
debera cerrarse tambien y tambien es muy importante entender que por esa sesion o
canal solo se podra inyectar una y solo una instruccion de sql, aunque java provee de
mecanismos que permiten inyectar un grupo de instrucciones de sql, pero estos
mecanismos se veran para el siguiente curso de java que se de.
Corrida:
TAREAS PROGRAMACION JAVA SERVLET
La solución que se propone en el programa ejemplo es primero abrir una sesion o canal
en su propio procedimiento(se acuerdan de la penultima unidad del curso??), cargar la
tabla en memoria con una instrucción select como se hizo en el ejemplo anterior,
navegar al ultimo renglon tabla.last(), leer el valor de la primera columna en una
variable entera llamada clave e incrementar esta variable en una unidad y listo ya
tenemos la clave del siguiente renglon, no olvidar cerrar este canal o sesion( si se
acuerdan que solo se puede inyectar una instruccion sql en una sesion-canal??).
Despues ya en una segunda sesion-canal, se hace el insert del SQL, como lo muestra el
programa ejemplo.
Programa HTML
<HTML>
</FORM></HTML>
SERVLET
Codigo JAVA
HttpServletResponse response)
cargarclave();
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch(java.lang.ClassNotFoundException e){System.out.println("classnotfound");}
response.setContentType("text/html");
Integer temp=Integer.valueOf(request.getParameter("EDAD"));
int n=instruccion.executeUpdate(q);
pagina.println("<HTML>");
pagina.println("</HTML");
destroy();
} ;//fin dopost
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }
catch(java.lang.ClassNotFoundException e)
ResultSet.CONCUR_UPDATABLE);
clave=numreng+1;
instruccion.close(); canal.close();
};//fin cargarclave()
//otro procedimiento
Corrida HTML
Codigo html:
<HTML>
</FORM></HTML>
Codigo java:
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
response.setContentType("text/html");
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
//buscando y recuperando
try{
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
while(tabla.next()) {
pagina.println("<TR>");
pagina.println("<TD>"+tabla.getString(1)+"</TD>");
pagina.println("<TD>"+tabla.getString(2)+"</TD>");
pagina.println("<TD>"+tabla.getString(3)+"</TD>");
pagina.println("</TABLE></CENTER></DIV></HTML>");
pagina.close();
catch(SQLException e) {};
destroy();
};//fin dopost
} //fin clase
CORRIDA html:
corrida java:
Codigo Html:
<HTML>
</FORM></HTML>
Codigo Java:
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
try{
//eliminando
instruccion.executeUpdate(borrar);
pagina.println("<HTML>");
pagina.println("</HTML>");
pagina.close();
catch(SQLException e) {};
destroy();
};//fin dopost
} //fin clase
Primero construir un programa html de busqueda por clave, que traiga el registro o
renglon a modificar.
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></HTML>
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
response.setContentType("text/html");
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
int clave1= temp.intValue();
//buscando y recuperando
try{
tabla.next();
pagina.println("<HTML>");
pagina.println("<FORM ACTION=http://192.168.1.133/servlet/prog44
METHOD=POST>");
pagina.println("</FORM></HTML>");
pagina.close();
catch(SQLException e) {};
destroy();
};//fin dopost
} //fin clase
Segundo servlet que actualiza tabla disco:
HttpServletResponse response)
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch(java.lang.ClassNotFoundException e){System.out.println("classnotfound");}
response.setContentType("text/html");
Integer temp=Integer.valueOf(request.getParameter("CLAVE"));
temp=Integer.valueOf(request.getParameter("EDAD"));
int edad= temp.intValue();
"NOMBRE='" + nombre +
try {
int n=instruccion.executeUpdate(q);
pagina.println("<HTML>");
pagina.println("</HTML");
destroy();
} ;//fin dopost
Codigo html:
<HTML>
</FORM></HTML>
Codigo Java:
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
response.setContentType("text/html");
Integer temp=Integer.valueOf(request.getParameter("EDAD"));
try{
pagina.println("<HTML><HEAD><TITLE>MI SERVLET</TITLE></HEAD>");
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
while(tabla.next()) {
pagina.println("<TR>");
pagina.println("<TD>"+tabla.getString(1)+"</TD>");
pagina.println("<TD>"+tabla.getString(2)+"</TD>");
pagina.println("<TD>"+tabla.getString(3)+"</TD>");
pagina.println("</TR>"); }; // fin while
pagina.println("</TABLE></CENTER></DIV></HTML>");
pagina.close();
catch(SQLException e) {};
destroy();
};//fin dopost
} //fin clase
Corrida html:
Corrida java:
tareas java sugeridas, construir dos o tres java servlets
de filtro, en uno de ellos poner los tres inputs texts para
que el usuario contruya completamente la condición.(suerte)
introduccion