Исключение результирующего набора - перед запуском результирующего набора
У меня возникли проблемы с получением данных из ResultSet объекта. Вот мой код:
Stringsql="SELECT type FROM node WHERE nid = ?"; PreparedStatementprep= conn.prepareStatement(sql); intmeetNID= Integer.parseInt(node.get(BoutField.field_meet_nid)); prep.setInt(1, meetNID);
if (! foundType.equals("meet")) { thrownewIllegalArgumentException(String.format("Node %d must be of type 'meet', but was %s", meetNID, foundType)); }
Трассировка ошибки:
Exception in thread "main" java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1072) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:986) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576) at nth.cumf3.nodeImport.Validator.validate(Validator.java:43) at nth.cumf3.nodeImport.Main.main(Main.java:38)
Что я здесь делаю не так?
Переведено автоматически
Ответ 1
По сути, вы помещаете курсор перед первой строкой, а затем запрашиваете данные. Вам нужно переместить курсор на первую строку.
Каждый ответ использует .next() или использует .beforeFirst(), а затем .next(). Но почему не это:
result.first();
Итак, вы просто устанавливаете указатель на первую запись и переходите оттуда. Это доступно с java 1.2, и я просто хотел упомянуть об этом для всех, у кого ResultSet существует одна конкретная запись.
Ответ 3
Вы должны выполнить result.next(), прежде чем вы сможете получить доступ к результату. Это очень распространенная идиома do
ResultSetrs= stmt.executeQuery(); while (rs.next()) { intfoo= rs.getInt(1); ... }
Ответ 4
Вы должны вызвать next(), прежде чем сможете начать чтение значений из первой строки. beforeFirst помещает курсор перед первой строкой, поэтому нет данных для чтения.