Вы не можете использовать ResultSet.equals
для этого, потому что это не то, для чего предназначен Object.equals
контракт. Он предназначен для проверки, равен ли объект другому объекту того же (или хотя бы совместимого) типа. Поэтому ResultSet
никогда не будет равным массиву значений объекта.
Похоже, что вы хотите выбрать одну строку из таблицы emp
, которая соответствует вашим поисковым значениям, в этом случае правильное решениеэто спросить базу данных только для этой строки. Выбор всех строк, а затем фильтрация в вашем приложении Java очень неэффективны, потому что база данных должна отправлять все строки в ваше приложение, в то время как поиск данных - это именно то, в чем база данных хороша.
Вместо этого вы должны использоватьгде пункт с подготовленным утверждением:
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
}
}
}