【发布时间】:2017-06-07 14:15:13
【问题描述】:
我的 Java 程序中有一个 JTable(t1) & JTextField(txtSearch) & JButton(btnSearch)。我想要做的是,如果我在 JTextField 中键入字母 A(不区分大小写)并按下按钮,所有名字包含字母 A 的医生都将显示在我的 JTable 上。直到我在我的 JTable 上得到一个特定的名称。
这是我的代码,
btnSearch = new JButton();
btnSearch.setBackground(new java.awt.Color(51, 51, 255));
btnSearch.setText("Search");
btnSearch.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String search =txtSearch.getText();
try{
conn = DriverManager.getConnection( "jdbc:mysql://localhost/bibodent", "root", "" );
String query = "SELECT name_doctor, mobile_doctor, phone_doctor, mail_doctor, city_doctor, spec_doctor, adres_doctor, note_doctor FROM doctor WHERE name_doctor LIKE '%" + txtName.getText() + "%' ";
ps = conn.prepareStatement(query);
ps.setString(1, search);
ResultSet rs = ps.executeQuery(query);
t1.setModel(DbUtils.resultSetToTableModel(rs));
}catch (Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, e);
}
}
});
【问题讨论】:
-
您将传统查询与准备好的查询混合在一起,它应该更像
String query = "SELECT name_doctor ... FROM doctor WHERE name_doctor LIKE ?";(为简洁起见截断)然后您可以使用ps.setString(1, "%" + search + "%");...我的JDBC有点生疏,但是这应该会让你走上更好的道路 -
您还应该在完成后管理您的资源(关闭您的连接、语句),我建议您看看try-with-resources