gpt4 book ai didi

java - 使用 TablerowSorter 和 rowFilter 在数据库中搜索记录

转载 作者:行者123 更新时间:2023-12-02 11:39:28 28 4
gpt4 key购买 nike

我设法拥有一个能够过滤数据库中记录的代码,并在我的 jtable 中显示结果。下面是代码:

try{
TableRowSorter<TableModel> sorter = new TableRowSorter<>(((DefaultTableModel)myTable.getModel()));
sorter.setRowFilter(RowFilter.regexFilter(JTextField.getText()));
myTable.setRowSorter(sorter);
}catch(Exception e){
e.getMessage();
}

问题是,当我单击我搜索的选定行记录时,我无法将其数据放入所需的文本字段中..
table_click的方法如下:

        try{
int row = myTable.getSelectedRow();
String table_click=(myTable.getModel().getValueAt(row,0).toString());
String sgl="select * from employees where Name='"+table_click+"'";
pst=conn.prepareStatement(sgl);
rs=pst.executeQuery();
if(rs.next()){
String a = rs.getString("Name");
JTextField.setText(a);
}
}catch(SQLException | NumberFormatException e){
e.getMessage();
}finally{
try{
rs.close();
pst.close();
}
catch(Exception e){
}
}

这样做的作用是只选择数据库中第一行的记录,而不选择搜索到的记录。
请问,当我使用 TableRowSorter 和 rowFilter 时,如何单击 jTable 来仅选择我搜索过的记录,而不选择数据库中的第一条记录?谢谢。

最佳答案

试试这个,

如果您只想在文本字段中显示名称,则不要再次对其运行查询。第一次打印String table_click一次以确保它具有所需的值,如果是,则只需

JTextField.setText(table_click); 

如果您出于某种原因特别想从数据库中完成此操作,请再次首先打印String table_click以确保它获得所需的值,并确保没有多个记录在您的数据库中具有相同的名称。如果所有这些都是正确的,那么尝试以传统方式编写PreparedStatement。

pst = conn.PrepareStatement("select * from employees where Name = ?;");
pst.setString(1,table_click);
pst.executeQuery();
if (!rs.isBeforeFirst()) {
System.out.println("Empty ResultSet");
}
else{

JTextField.setText(rs.getString("Name"));
}

关于java - 使用 TablerowSorter 和 rowFilter 在数据库中搜索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686847/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com