我正在用Java編寫代碼,用戶可以在名爲lastname的JTextField中輸入姓氏,然後在MySQL數據庫中搜索可能的匹配項。例如,用戶開始鍵入字母「M」(不區分大小寫且不帶雙引號),所有以字母「M * 」開頭的姓氏將顯示在JTable上。如果用戶輸入第二個字母,例如「A」,則JTable上的結果將僅顯示帶有「MA」的姓氏,然後如果用戶鍵入第三個字母,例如「N」,則JTable將僅顯示所有以 「MAN ***」 等姓氏..在Java和MySQL數據庫中搜索篩選器
我看了一下
SELECT * FROM表WHERE姓氏LIKE值
,並試圖用我的程序但是,我收到一個錯誤。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError.Exception:你有 在您的SQL語法錯誤;檢查對應於您 MySQL服務器版本在線路附近使用「%」正確的語法手冊1
這是我在事件部分代碼,當有鍵的JTextField姓氏按:
private void lastNameKeyPressed(java.awt.event.KeyEvent evt) {
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "students_dbs";
Statement stmt = null;
ResultSet result = null;
String driver = "com.mysql.jdbc.Driver";
String databaseUserName = "user1";
String databasePassword = "test";
PreparedStatement pst = null;
try{
conn = DriverManager.getConnection(url + dbName, databaseUserName, databasePassword);
stmt = conn.createStatement();
System.out.println("Connected to the database.");
}catch(Exception e){
System.out.println("Failed to connect ot the database.");
}
try{
String sql = "SELECT studentno, lastname, firstname, middlename FROM student WHERE lastname LIKE '%" + lastname.getText() + "'%";
pst = conn.prepareStatement(sql);
result = pst.executeQuery();
studentsTable.setModel(DbUtils.resultSetToTableModel(result));
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
現在我搜索了一兩天,然而,我被卡住了。我在使用MySQL中的LIKE方面有點新鮮。非常感謝任何形式的幫助!先謝謝你!
打印的'終值sql'變量請。 –
考慮使用SQL獲取整個數據,然後使用['RowSorter'](http://docs.oracle.com/javase/7/docs/api/javax/swing/RowSorter.html)過濾表格 - *「 RowSorter爲排序**和篩選提供了基礎**「 –
LIKE'%」+ lastname.getText()+「'%」 - > LIKE'%「+ lastname.getText()+」 %'「 –