我正在使用H2数据库系统来处理我正在进行的小型Java项目。如果我手动运行查询,一切都按预期工作,但是当我运行我的程序时,我得到以下内容:
Constructed: INSERT INTO library VALUES (null,'TEMPORARY_EFFECT_1369614387100','asdf',0,0,0,0,0)
Constructed: SELECT id FROM library WHERE name='TEMPORARY_EFFECT_1369614387100'
org.h2.jdbc.JdbcSQLException: No data is available [2000-171]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.jdbc.JdbcResultSet.checkOnValidRow(JdbcResultSet.java:2956)
at org.h2.jdbc.JdbcResultSet.get(JdbcResultSet.java:2962)
at org.h2.jdbc.JdbcResultSet.getInt(JdbcResultSet.java:306)
我不确定发生了什么。根据JDBC和H2的JavaDocs,我正在做正确的事情(我认为)。通过调用INSERT
和db.createStatement().executeUpdate(...)
SELECT via db.prepareStatement(..., ResultSet.TYPE_SCROLL_INSENSITIVE)
答案 0 :(得分:7)
此异常通常是因为在调用其中一个ResultSet's
getter方法之前未调用Resultset#next,在这种情况下似乎是getInt
。
请务必致电
rs.next();
在使用任何getter方法之前。