try {
String sql ="select * from staff where id=? ";
pst=conn.prepareStatement(sql);
pst.setString(1,txt_search.getText());
rs=pst.executeQuery();
String add1 =rs.getString("id");
txt_empid.setText(add1);
String add2 =rs.getString("Name");
txt_firstname.setText(add2);
String add5 =rs.getString("Salary");
txt_salary.setText(add5);
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
здесь у меня есть некоторая проблема в методе setString. Не могли бы вы объяснить причину этой ошибки. Я пробую много способов, это проблема jdbc
Вы можете представить ResultSet
как итератор для возвращаемых данных. Чтобы получить доступ к любой строке в возвращаемых данных, включая первый, вам нужно направить курсор на нее, вызвав next()
. Или, как это красноречиво объясняет документация (я добавил выделение жирным шрифтом к соответствующему предложению):
Объект
ResultSet
поддерживает курсор, указывающий на его текущую строку данных. Первоначально курсор позиционируется перед первой строкой. Следующий метод перемещает курсор в следующую строку и потому что он возвращаетfalse
когда в объектеResultSet
больше нет строк, его можно использовать в цикле while для итерации по набору результатов.)
Чтобы сделать длинный рассказ коротким - вызовите rs.next()
после выполнения запроса, чтобы продвинуть его в первую (и только) строку:
rs = pst.executeQuery();
if (rs.next()) {
String add1 = rs.getString("id");
txt_empid.setText(add1);
String add2 = rs.getString("Name");
txt_firstname.setText(add2);
String add5 = rs.getString("Salary");
txt_salary.setText(add5);
} else {
// The query returned no rows - i.e., the given ID doesn't exist in the table.
// Some error handling is required here
}