UNIDAD 6: JAVA JSP REGISTROS Y ARCHIVOS DIRECTOS

TEMA 4: BUSQUEDA JAVA JSP

En este tema se analiza la busqueda de un registro o renglón determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de información proporcionando un dato de busqueda generalmente la clave del registro.

Recordar que en esta operación se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui si se puede acceder directamente un registro n cualesquiera.

Prog28.jsp

.
<%@ page import="java.io.*" %>
<%
// creando e inicializando los campos del registro
int clave=0;
String nombre="";
int edad=0;
// se ocupa el tamano del registro
// y recordar que cada char de la string , java la almacena en dos bytes
// en total la string de 25 se almacena en 50 bytes
// mas dos ints de 4 bytes c/u nos da en total
long treg=58;
if(request.getParameter("BUSCAR") != null)
{
// capturando clave de busqueda
int claveb=Integer.parseInt(request.getParameter("CLAVEB"));
// abriendo archivo
try {
File arch=new File("c:\\archivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
// moviendo apuntador interno a posicion deseada
archivo.seek(claveb * treg);
// leyendo registro
clave=archivo.readInt();
//leyendo la string 25 caracteres
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando en tabla html
// construyendo tabla html
out.println("<HTML><TABLE Border=10 CellPadding=5><TR>");
out.println("<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th></TR>");
out.println("<TR>");
out.println("<TD>"+clave+"</TD>");
out.println("<TD>"+nombre+"</TD>");
out.println("<TD>"+edad+"</TD>");
out.println("</TR></table>");
// limpiar la string o java encadena con la siguiente busqueda
nombre="";
// cerrando archivo
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog28.jsp METHOD=post>");
out.println("CLAVE BUSCAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=BUSCAR VALUE=buscar ><BR>");
out.println("</FORM>");
%>

corrida:

image52.jpg

Como se desprende del programa usando archivo.seek() es posible posicionarse en cualquier byte del archivo.

El formato usado seek() es:

Archivo.seek1);

Recordar que debemos posicionar el apuntador interno de registros, al principio o inicio del registro que se quiere, por ejemplo en este ejemplo el inicio del registro (1 juan perez 22) se encuentra en el byte 59, pero java inicia una lectura o una escritura en el BYTE ANTERIOR para este caso la lectura debe tener el apuntador interno de registros en el BYTE 58, y si se multiplica la clave 1 por el tamaño de registro 58, adivinar que BYTE SE OBTIENE.

Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea el propio servidor quien calcule el byte donde empieza un registro determinado usando la formula algebraica (clave * tamaño de registro).

TAREAS PROGRAMACION JAVA JSP

Construirles programas de busquedas a los archivos ya construidos.

1) long)(clave)* tamañoderegistro
Politica de Privacidad