2016-07-03 7 views
-1

Könnten Sie mir bitte sagen, was zu meinem Code hinzufügen, so dass, wenn ich einen Buchstaben in das Textfeld eingeben, bevor ich mit der Eingabe des Suchergebnisses bereits auf jtable ohne zu warten beginnen ich, um das ganze Wort zu tippen?Durchsuchen der MySQL-Datenbank mit Autocomplete auf JTable mit Textfeld

Im Folgenden finden Sie meinen Code für Schlüssel freigegebenen Ereignis auf der Textbox. Danke für Ihre Hilfe.

private void jTextFieldSearchKeyReleased(java.awt.event.KeyEvent evt) {            
    try{ 
     String selected=(String)jComboBoxSelected.getSelectedItem(); 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/" 
     + "employee_certificate","root",""); 

      String sql="SELECT stuff.Emp_Id,stuff.Emp_Name, stuff.Department, " 
      + "certificate.Cert_Code, certificate.Cert_Name,\n" + 
      "certificate.Cert, certificate.Vendor, certificate.Date_Taken, " 
      + "certificate.Expiry_Date FROM stuff LEFT JOIN certificate" 
       + " ON stuff.Emp_Id=certificate.Emp_Id " 
       + "WHERE "+selected+" =? ORDER BY stuff.Emp_Name\n" ; 

    PreparedStatement pstmt=con.prepareStatement(sql); 
    pstmt.setString(1, jTextFieldSearch.getText()); 
    ResultSet rs=pstmt.executeQuery(); 
     jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 
     pstmt.close(); 
      //con.close(); 
    } 
    catch(Exception ex){ex.printStackTrace();} 
}            
+0

Für eine bessere Hilfe früher, poste ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/). Beachten Sie, dass es für dieses Problem nur notwendig ist, sich mit Code so zu befassen, dass bei der Eingabe in das Textfeld eine Aktion ausgeführt wird, sodass die Datenbank selbst redundant ist. –

+0

Hi Andrew ... das ist der Compete-Code, den ich für Schlüssel freigegebene Ereignis auf meinem Textfeld verwende.Ich habe Kopie eingefügt, wie es ist –

+2

'das ist der Compete-Code' - wie Sie erwarten, dass wir diesen Code kompilieren und testen? Lesen Sie den Kommentar und lesen Sie die bereitgestellten Links. Der von Ihnen gepostete Code ist KEIN MCVE/SSCCE. Sie wurden auch gebeten, den DB-Code NICHT zu veröffentlichen, da wir keinen Zugriff auf Ihre Datenbank haben. Wo ist dein Debug-Code? Haben Sie den Wert des Textfelds überprüft, als die Methode aufgerufen wurde? Wir können Ihren Code nicht testen. Nur Sie haben Zugriff auf die Datenbank. – camickr

Antwort

0

Nach einem 2 Tage Kampf schließlich ich eine Antwort bekam ... i ‚%‘ LIKE verwenden nur benötigt als shown.No ein leiden sollte, wie ich

private void jTextFieldSearchKeyReleased(java.awt.event.KeyEvent evt) {           
    try{ 
     String selected=(String)jComboBoxSelected.getSelectedItem(); 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+ "employee_certificate","root",""); 

      String sql="SELECT stuff.Emp_Id,stuff.Emp_Name, stuff.Department, " 
      + "certificate.Cert_Code, certificate.Cert_Name,\n" + 
      "certificate.Cert, certificate.Vendor, certificate.Date_Taken, " 
      + "certificate.Expiry_Date FROM stuff LEFT JOIN certificate" 
       + " ON stuff.Emp_Id=certificate.Emp_Id " 
       +"WHERE "+selected+" LIKE ? ORDER BY stuff.Emp_Name\n" ; 
     PreparedStatement pstmt=con.prepareStatement(sql); 
     pstmt.setString(1,jTextFieldSearch.getText() + "%"); 
     ResultSet rs=pstmt.executeQuery(); 
     jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 

     pstmt.close(); 
     con.close(); 
    } 
    catch(Exception ex){ex.printStackTrace();} 
}            
tat
Verwandte Themen