Java 更新表格模型的方法
这是我用来在数据库中搜索单个记录的方法。它位于一个名为Model的类中: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_
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中提供一个相对“实时”的数据库视图。我想我最终会去寻呼的。谢谢你的帮助。我只是在胡闹,我知道我为什么要这样做