1 回答
TA贡献1890条经验 获得超9个赞
您不能用于ResultSet.equals
此目的,因为这不是Object.equals
合同的用途。它用于检查一个对象是否等于相同(或至少兼容)类型的另一个对象。因此, AResultSet
永远不会等于对象值数组。
看起来您想从表中选择与emp
您的搜索值匹配的一行,在这种情况下,正确的解决方案是仅向数据库询问该行。选择所有行然后在 Java 应用程序中进行过滤效率非常低,因为数据库必须将所有行发送到您的应用程序,而查找数据正是数据库所擅长的。
相反,您应该使用带有准备好的语句的 where 子句:
try (Connection connection = DriverManager.getConnection(url, userid, pwd);
PreparedStatement pstmt = connection.prepareStatement(
"select * from emp where Name = ? and Designation = ? and Pay = ? and City = ?")) {
pstmt.setString(1, search);
pstmt.setString(2, search1);
pstmt.setDouble(3, search2);
pstmt.setString(4, search3);
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next() {
String nm = rs.getString("Name");
String desg = rs.getString("Designation");
double pay = rs.getDouble("Pay");
String city = rs.getString("City");
jTextField1.setText(nm);
jTextField2.setText(desg);
jTextField3.setText(String.valueOf(pay));
jTextField4.setText(city);
} else {
// handle not found case
}
}
}
添加回答
举报