-
-
Notifications
You must be signed in to change notification settings - Fork 25
Closed
Description
As reported on firebird-java - Error: No row available for wasNull., the method wasNull throws an exception when on the insert row.
This can be reproduced with the program provided by Pierre Vacher:
public void testWasNull(java.sql.Connection connection) {
String select = "select * from t1";
try {
populateTable(connection);
java.sql.PreparedStatement ps = connection.prepareStatement(select,
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_UPDATABLE);
java.sql.ResultSet rs = ps.executeQuery();
rs.moveToInsertRow();
rs.updateNull(1);
rs.updateString(2, "s10");
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
Object value = rs.getObject(i);
if (rs.wasNull()) {
System.out.println("SensitiveResultSet.testWasNull() Value was Null");
}
else {
System.out.println("SensitiveResultSet.testWasNull() Value: " + value.toString());
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
void populateTable(java.sql.Connection connection) throws SQLException {
java.sql.Statement statement = connection.createStatement();
//statement.execute("drop table t1 if exists");
statement.execute("create table t1 (i int primary key, v varchar(10))");
statement.close();
String insert = "insert into t1 values(?, ?)";
java.sql.PreparedStatement ps = connection.prepareStatement(insert);
for (int i = 0; i < 10; i++) {
ps.setInt(1, i);
ps.setString(2, String.valueOf(i) + " s");
ps.execute();
}
ps.close();
}producing the exception:
java.sql.SQLException: No row available for wasNull.
at org.firebirdsql.jdbc.FBResultSet.wasNull(FBResultSet.java:465)
at io.github.prrvchr.jdbcdriver.resultset.SensitiveResultSet.testWasNull(SensitiveResultSet.java:117)
at io.github.prrvchr.jdbcdriver.resultset.SensitiveResultSet.<init>(SensitiveResultSet.java:96)
at io.github.prrvchr.jdbcdriver.resultset.ResultSetHelper.getResultSet(ResultSetHelper.java:77)
at io.github.prrvchr.uno.sdbcx.RowSetSuper.<init>(RowSetSuper.java:69)
at io.github.prrvchr.uno.sdb.RowSet.<init>(RowSet.java:58)
at io.github.prrvchr.uno.sdb.PreparedStatement.getResultSet(PreparedStatement.java:93)
at io.github.prrvchr.uno.sdbc.PreparedStatementMain.executeQuery(PreparedStatementMain.java:404)