Перед началом исключения набора результатов в исключительной ситуации java jdbc

0
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

  • 0
    Можете ли вы добавить точное сообщение об ошибке, которое вы получаете?
  • 0
    java.sql.SQLException Перед запуском набора результатов
Теги:
jdbc
sqlexception
resultset

1 ответ

1
Лучший ответ

Вы можете представить 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
}
  • 0
    Большое спасибо Mureinik Это работает так эффективно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню