viernes, 11 de diciembre de 2009

Buscador instantáneo desde una Base de Datos

Para realizar una búsqueda instantánea de la información requerida desde una base de datos (en este caso Access), aplicaremos una entrada mediante un jTextField el cual capturará lo escrito.
Entonces haremos uso del evento "KeyReleased" del jTextField, de modo que este evento nos podrá ayudar a capturar el texto ingresado o editado cada vez que se teclee algo.
Luego podemos hacer algo como ésto:

void jTextField_keyReleased(KeyEvent e) {
String palabra = jTextField.getText();
}

Lo que indica, que cada vez que tecleemos algo, el String palabra sera actualizado por lo que contenga el jTextField.
Una vez conocido esto, pasaremos a realizar la búsqueda en la base de Datos. Supongamos que tenemos una BD Access con una tabla llamada "ListaPersonas", con una columna "Nombre".
Podemos crear un método que podemos incluir dentro del evento "KeyReleased". Tal método sería así:

private void Buscar(String palabra){
try{
String nombre;
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT Nombre FROM ListaPersonas");

while(rs.next())
{
nombre=rs.getString(1);

if(nombre.startsWith(word))
System.out.println("COINCIDE: "+nom);
}
}
catch(Exception e){
JOptionPane.showMessageDialog(this,"Error al cargar los datos ");
}
}

Mientras que se hace un recorrido a los datos de la columna, se compara el String obtenido si es que ese starsWith (Comienza con) el String palabra que habiamos capturado del jTextField.
De esta manera logramos que se muestren las coincidencias. Para mejorarlo esto aún más podemos agregar mas funciones como por ejemplo para que omita las mayúsculas o minúsculas, o mostrarlos en un jTable o jList.

Acá les dejo un proyecto que hice como ejemplo. Incluye una base de datos de prueba, lo registran en el Orígenes de Datos ODBC con el nombre centro.

4 comentarios:

Shamir C. Alvarez dijo...

Buen aporte man esto me sirvio muxo en mi clase de programacion orientada a objetos..... muy bueno el blog sigue asi....

Anónimo dijo...

muy buen code pero no seria un buscador instantaneo del todo como se podria decir, me explico necesariamente tenemos q hacer una busqueda de algun dato q se encuentre teclar tal y cual esta en la BD, creo yo q seria mas optimo haciendo una consulta usando
(SELECT *FROM WHERE ListaPersonas WHERE Nombre LIKE '"+palabra+"%'")
y si kieres usando while haces q todo lo q encuentra se guarde en un array y envias a un table para q se muestre los datos obtenido. weno eso seria a modo de sugerencia para q la busqueda sea deacuerdo a lo tecleado va mostrando los datos q comiencen con lo ingresado. . .

Anónimo dijo...

Gracias por el BloG me a ayudadO con lo de el programa d StaDiZtikA y lo Del JbuildEr Chvr Paul

Anónimo dijo...

Bacan tu blog ehh! gracias x too! :P
tenias tus truquitossS! :D