2016-07-20 3 views
1

Ich möchte entweder Nachname oder Vorname zu filtern Ergebnis auf JTable aus der Datenbank, so dass wenn ich entweder Nikola oder Tesla in der JTextfield, die Zeile mit einem der Namen wird gefiltert.Durchsuchen Sie die MYSQL - Datenbank - Filterung entweder mit Vorname oder Nachname in JTextfield eingegeben JTable

Ich habe den Namen als ein Feld in der Datenbank gespeichert, d.

Ich habe ein Feld für Name, der beide Namen speichert.

Ich möchte nicht separate First_Name und Last_Name Feld haben.

Bitte legen nahe, was ich hinzufügen sollte auf meinen Code unten gezeigt:

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(); 
    } 
} 
+1

Ihre Lösung ist in Ihrer Abfrage ** LIKE% Name% ** –

+0

Und wie kann ich das gleiche auf Anfrage unten erreichen? String sql = "Wählen Sie Emp_Name von Mitarbeitern, deren Emp_Name wie '%' ist; War schon seit einiger Zeit darauf und macht keinen Fortschritt –

+0

es ist die gleiche Lösung, nur diffirent Sekunde der Antwort das ist alles ** "%" + jTextFieldSearch.getText() + "%" === LIKE%?% ** –

Antwort

1

Sie müssen auch% vor dem jTextFieldSearch.getText() hinzuzufügen. Siehe unten

pstmt.setString(1, "%" + jTextFieldSearch.getText() + "%");

1

Die wahre Lösung hierfür ist, sollten Sie %% innerhalb quots verwenden '%%', ohne Anführungszeichen Sie diese Fehlermeldung erhalten:

LIKE ‚% Name % '

also, mit vorbereiteter Aussage sollten wir Name mit ändern? und das Ergebnis ist wie folgt aus:

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"; 

Ich hoffe, das Ihnen helfen kann, viel Glück.

+0

das funktioniert gut, aber wenn ich String sql verwenden = "wählen Emp_Name von Mitarbeitern wo Emp_Name wie '%" + jTextFieldEmpName.getText() + "%'"; es tut nichts. Wie ich alles in diese Abfrage aufnehmen möchte. –

Verwandte Themen