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
 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad