0
我有一個表,我SQL
在下面的結構,稱爲學生:過濾MySQL的數據的JTable
+-----------+-----------+-----------+------------+
| studentno | lastname | firstname | middlename |
+-----------+-----------+-----------+------------+
| 2001-0001 | Matrix | John | G |
| 2001-0002 | Mata | Evan | A |
| 2001-0003 | Melly | Carmelo | P |
| 2001-0004 | Hamburger | Hardy | P |
+-----------+-----------+-----------+------------+
我有一個JTable
,在我的Java程序一個JTextField
。我想要做的是,如果我在JTextField
中輸入字母M(不區分大小寫),則所有姓氏以M
開頭的學生將顯示在我的JTable
上。如果我輸入了第二封信,說,例如,A
,所有誰的姓學生與MA
開始顯示,直到我在我的JTable
有一個特定的名字..
我的問題是,即使我類型信M
,所有的數據在我MA
出現在我的JTable
,而不僅僅是所有誰的姓學生開頭字母M
.. 而我JTable
即使我清空JTextField
...
我使用的是Netbeans
,到目前爲止,我的代碼在我的JTextFieldKeyPressed
:
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);
}
}
謝謝!我實際上使用netbeans,所以不是使用KeyPressed,而是使用KeyReleased。我認爲這與您建議的DocumentListener類似。對於我的查詢,我省略了給我這個查詢的第一個'%'。 'String sql =「SELECT studentno,lastname,firstname,middlename FROM student WHERE firstname LIKE'」+ jtextfield.getText()+「%'」;' – ashlrem
@ashlrem恭喜。 – Salah