Como Realizar un Buscador en Java y MySql?

Iniciado por hack-4-life, 12 Marzo 2011, 22:48 PM

0 Miembros y 1 Visitante están viendo este tema.

hack-4-life

Buenas saludos a todos,bueno mi problema es que intento realizar un buscador en java,pero lo quiero es que cuando vaya escribiendo en el JTextField();y me vayan apareciendo los posibles resultados,lo estoy implementando con esto:
Código (java) [Seleccionar]

  public String[] buscarpersona (int id){
     
     
        try
        {
           Class.forName (driver);
       
           con = DriverManager.getConnection (url + db,user,pass);
           System.out.println ("su conexion ha sido muy exitosa");
           stmt = con.createStatement();
           rs=stmt.executeQuery("SELECT * FROM personas WHERE personaid='" +id+"'");
           ResultSetMetaData rsmd=rs.getMetaData();
           datos=new String[rsmd.getColumnCount()];
           int cont2=1;
        //ciclo de llenado de resultset al arreglo para poder mandarlo al programa
        //arreglo-->0
        //resultset-->1
           while(rs.next()){
              for(int cont=0;cont<rsmd.getColumnCount();cont++){
                 datos[cont]=rs.getString(cont2);
                 cont2++;
             
              }
           }
           stmt.close();
           con.close();
           return datos;
       
        }
            catch (Exception e){
              e.printStackTrace();
              System.err.println ( e.getMessage ());
           
           
           
           
           
              return datos;
           
             
           
             
           
           }
     }



y esto es lo que tengo en java:
Código (java) [Seleccionar]


private void btnbuscarActionPerformed(java.awt.event.ActionEvent evt){
String datos[];
try{
int id=Integer.parseInt(txtReg.getText());
datos=bd.BuscarPersona(id);
if(datos!=null){
//datos[0] corresponde al id
txtNombre.setText(datos[1]);
txtDomicilio.setText(datos[2]);
txtMail.setText(datos[3]);
txtCiudad.setText(datos[4]);
}
}catch(Exception e){
JOptionPane.showMessageDialog(this,"debe escribir un numero en el campo de registro","aviso",JOptionPane.ERROR_MESSAGE);
txtReg.grabFocus();
txtReg.selectAll();
}
}

aver si alguien me puede recomendar algo,estaba buscando sobre keylistener,no se si alguno de ustedes han hecho algo parecido,saludos y gracias de antemano xauz...
""DE QUE SIRVE EL CONOCIMIENTO SI SE PRIVA DE SU DISTRIBUCION"

NetJava

Buenas,

No se si esto te ayudará o si lo he entendido bien. Pero si lo que quieres es que cuando empiezas a escribir en "JTextField" te empiecen a salir posibles opciones lo que se tendría que hacer es en la SQL poner un "WHERE palabra LIKE '%posiblepalabra%'" (más o menos no se si falta el =), y además controlar el evento del "JTextField" para que vayan apareciendo las posibilidades según se va escribiendo.

Bueno espero que esto te ayude, saludos! Y si esto es lo que buscabas y tienes dudas pregunta.

hack-4-life

gracias por responder y si lo hago con un keylistener como tendria su estructura no se si me pueds pasar un ejemplo o como hacerlo con ese evento...seguire buscando gracias por tu respuesta saludos
""DE QUE SIRVE EL CONOCIMIENTO SI SE PRIVA DE SU DISTRIBUCION"

NetJava

#3
Buenas,

Yo lo que tu quieres hacer lo hice en .net, y he supuesto como se tendría que hacer en Java, jajaja la verdad es que yo estoy aprendiendo Java. A ver si esto te puede ayudar un poco más.

_____________________________________________________________________

Código (java) [Seleccionar]
JTextField textField = new JTextField(10);
textField.addKeyListener(new KeyAdapter()
{
  public void keyTyped(KeyEvent e)
  {
     // Verificar si la tecla pulsada se encuentra en la base de datos.
     char caracter = e.getKeyChar();      //Se recogería el valor. Se podría buscar
     //por el carácter o se podían ir agrupando para la búsqueda en la BD.
     //Supongo que aquí es donde se envía la información encontrada por ejemplo
     //a un Combobox para ver todas las opciones.
  }
});


_____________________________________________________________________

Código (sql) [Seleccionar]
SELECT *
FROM Personas
WHERE Persona LIKE '%'"+ ContenidoJjtextfield1 +"'%';


_____________________________________________________________________

Bueno pues espero no haberme confundido, pero creo que sería algo así. Ya que en java no sabía como se hacía he hecho un ejemplo que pensaba que podía funcionar, pero no... En el siguiente ejemplo salta el evento del JTextField cuando se presiona "enter", pero te lo pongo por si... jajajaja.
_____________________________________________________________________


Código (java) [Seleccionar]
package PackEventJTextField;

import java.*;
import java.awt.*;
import javax.swing.*;

public class Interfaz extends JFrame{

private JTextField jTextField1 = new JTextField();
private String memoria=jTextField1.getText();
private BorderLayout esquema;

public Interfaz(){
super("Prueba evento JTextField");

definirventana();
jTextField1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               jTextField1ActionPerformed(evt);
           }
       });

this.setSize(200,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void definirventana(){
esquema = new BorderLayout( 1, 1 ); //

// obtener panel de contenido y establecer su esquema
Container contenedor = this.getContentPane();
contenedor.setLayout( esquema );

contenedor.add( jTextField1, BorderLayout.NORTH );

}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

      if (!memoria.equals(jTextField1.getText())){
        javax.swing.JOptionPane panel=null;
        panel.showMessageDialog(null,"ha cambiado el texto");
     
      }
   }
}

____________________________________________________________________

Saludos!

hack-4-life

o woww excelente informacion,ams o menos eso es lo que quiero hacer,una vez lo vi un tutorial pero con fox pro,la zorra si te da algunas ventanas a utilizar querys y estar conectado a la base de datos,tambien de lo que te digo es como por ejemplo en youtube escribes algo y te muestra todo los posibles que puede haber,con lo que me acabas de decir lo voy a implementar,lo tengo que hacer cueste lo que cuestee,tenia pensando implementar la funcion match case en mysql,que con like,lo hare de las dos formas,gracias xd,lo voy a implementar,me acabas de dar una idea,si tengo dudas,lo posteo suertee
""DE QUE SIRVE EL CONOCIMIENTO SI SE PRIVA DE SU DISTRIBUCION"

NetJava

Buenas,
pues me alegro que te haya servido de algo jajaja!!!

Saludos!

kento10110

HOla gente!!
me encuentro en un problema con una aplicacion que realizo:
seria factible que vieran mi codigo:

  public static Facultad_escuela buscarFaEs(String es) {
        Facultad_escuela r = null;
        String q = "select f.nombre as nombre, e.nombre as nombre"
                + "from facultad f "
                + "inner join escuela e on f.idFacultad=e.idFacultad"
                + "WHERE e.nombre LIKE '"+es+"%'";
        TestConexion.ejecutarConsulta(q);
        r =dameFaEsDelaBD();
        return r;
    }

ahi lo tienen, el problema es que genera error al  probarlo, revisé lo resto de codigo, y esta bien.
lo curioso es que si saco la ultima linea   + "WHERE e.nombre LIKE '"+es+"%'"; si me corre. el caso es que tengo que interactuar con el teclado una especie de busqueda predictiva es por eso que tiene como parametro un String es....!! :(
si alguien entiende el caso o le ha pasdoo....
ayudenmeee .. se lo agradeceré eternamente

leogtz

No se pueden revivir mensajes viejos, si necesitas ayuda escribe un mensaje nuevo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com