UNIDAD 9: BASES DE DATOS

JAVA TEMA 3: CONSULTA SQL SELECT

Empezamos por un programa-servlet que lee y despliega la tabla que esta en la base de datos construida en el JAVA TEMA anterior:

La instruccion basica de SQL a usar es:

SELECT * FROM MITABLA;

Codigo.html

<HTML>
<FORM ACTION=http://192.168.1.133/servlet/prog38 METHOD=POST>
<INPUT TYPE=SUBMIT VALUE=OK>
</FORM></HTML>

No olvidar que tambien la base de datos ya debe estar enlazada a su odbc driver.

Codigo java

import java.io.*; import java.util.*; import java.net.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*;
public class prog38 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");
try { tabla = instruccion.executeQuery("select * from tabla");
PrintWriter pagina =response.getWriter();
pagina.println("<HTML><HEAD><TITLE>MI SERVLET</TITLE></HEAD>");
pagina.println("<P ALIGN="+"CENTER"+">MI TABLA</P>");
pagina.println("<P ALIGN="+"CENTER"+">CLAVE NOMBRE EDAD</P>");
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();
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

notas:

Observar todos los Imports

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.

Observar que se usa el metodo getString(NUMERO O “NOMBRE COLUMNA”), tambien de ResultSet, para ir leyendo y desplegando el dato en la tabla html.

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:

image57.jpg

TAREAS PROGRAMACION JAVA SERVLET

Hacer java servlets de lectura y despliegue, para las tablas hechas.

Politica de Privacidad