Java 更新表格模型的方法

Java 更新表格模型的方法,java,sql,Java,Sql,这是我用来在数据库中搜索单个记录的方法。它位于一个名为Model的类中: public ArrayList<Person> getPerson(String fName, String sName){ ArrayList<Person> people = new ArrayList<Person>(); String findSql = "SELECT * FROM candidates WHERE f_name = ? AND s_

这是我用来在数据库中搜索单个记录的方法。它位于一个名为Model的类中:

    public ArrayList<Person> getPerson(String fName, String sName){
    ArrayList<Person> people = new ArrayList<Person>();

    String findSql = "SELECT * FROM candidates WHERE f_name = ? AND s_name = ?";

    if(con != null){
        try(
            PreparedStatement findStatement = con.prepareStatement(findSql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ){
            findStatement.setString(1, fName);
            findStatement.setString(2, sName);

            ResultSet rs = findStatement.executeQuery();

            rs.beforeFirst();
            while(rs.next()){
                String title = rs.getNString("title");
                String name = rs.getNString("f_name");
                String surname = rs.getNString("s_name");
                String address1 = rs.getNString("address1");
                String address2 = rs.getNString("address2");
                String address3 = rs.getNString("address3");
                String postcode = rs.getNString("postcode");
                String empStatus = rs.getNString("emp_status");
                String searchStatus = rs.getNString("search_status");
                Person p = new Person(title, name, surname, address1, address2, address3, postcode, empStatus, searchStatus);

                people.add(p);
            }

            rs.close();
        }catch(SQLException e){
            System.out.println(e);
        }
    }
    return people;
}
public ArrayList getPerson(字符串fName,字符串sName){
ArrayList people=新建ArrayList();
String findSql=“从f_name=?和s_name=?”的候选项中选择*;
如果(con!=null){
试一试(
PreparedStatement findStatement=con.prepareStatement(findSql,ResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u只读);
){
findStatement.setString(1,fName);
findStatement.setString(2,sName);
ResultSet rs=findStatement.executeQuery();
rs.beforeFirst();
while(rs.next()){
字符串title=rs.getNString(“title”);
String name=rs.getNString(“f_name”);
字符串姓氏=rs.getNString(“s_name”);
字符串address1=rs.getNString(“address1”);
字符串地址2=rs.getNString(“地址2”);
字符串地址3=rs.getNString(“地址3”);
字符串postcode=rs.getNString(“postcode”);
字符串empStatus=rs.getNString(“emp_status”);
字符串searchStatus=rs.getNString(“搜索状态”);
人员p=新人员(职务、姓名、姓氏、地址1、地址2、地址3、邮政编码、empStatus、搜索状态);
新增(p);
}
rs.close();
}捕获(SQLE异常){
系统输出打印ln(e);
}
}
还人,;
}
我有一个名为CandidateTable的类,它需要一个TableModel。我有点想用上面的方法来更新表中的数据。我应该重载此方法,将其更改为能够使用“no”参数(即使用LIKE检索每个记录),还是实现其他解决方案? 谢谢


*编辑:很抱歉有这么大的变化-我正试图让文章更清楚。

如果您打算使用上述方法的结果来更新数据,请选择“是”。我认为没有理由尝试重载上述方法。顺便说一句,您应该同时释放ResultSet和PreparedStatement(通常在finally块中,因为这样可以保证即使出现异常也能释放它们)。此方法实际上并不更新数据,它只是从数据库中检索具有特定名字和姓氏的人员的arraylist。调用此方法的类然后在JDialog中显示这些人。关于上面的问题,我刚刚决定写另一个方法从数据库中获取所有记录,然后我可以添加和删除搜索参数,而不必担心额外的逻辑和清晰度。感谢资源建议-我将把它们放在finally中(尽管PreparedStatement在try with resources块中不是很好吗?我是新手),PreparedStatement也应该关闭,最好将资源释放代码放在finally块中。检索所有记录只适用于非常小的表,否则最好实现一些搜索例程(包括分页),我想在关闭资源的情况下尝试一下?无论如何,是的,这是一个相对较小的表-我只是尝试在输入区域旁边的JTable中提供一个相对“实时”的数据库视图。我想我最终会去寻呼的。谢谢你的帮助。我只是在胡闹,我知道我为什么要这样做