在通过ResultSet反向检索数据时出现NullPointerException
16lz
2021-01-22
Statement createStatement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet executeQuery = createStatement.executeQuery("select * from stu");
executeQuery.afterLast();
while (executeQuery.previous()) { //15th line<--exception occurs at this place after first record is retrieved
int rollno = executeQuery.getInt(1);
System.out.println("rollno " + rollno + " name " + executeQuery.getString(2));
if (rollno == 1) {
if (createStatement.executeUpdate("update stu set name=" + "'vinay'" + "where rollno=1") >= 1) {
System.out.println("row updated");
}
}
}
Output:
rollno 1 name vinay
rollno 1名称vinay
row updated
//After first record is retrieved it throws exception
//在检索到第一条记录后,它会抛出异常
Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.driver.ScrollableResultSet.previous(ScrollableResultSet.java:630)
at com.vk.db.ScrollableResultSet.main(ScrollableResultSet.java:15)
2 个解决方案
#1
1
The cause of error is recycling statement object. Try this code/
错误的原因是回收语句对象。试试这个代码/
Statement createStatement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet executeQuery = createStatement.executeQuery("select id, name from stu");
executeQuery.afterLast();
while (executeQuery.previous()) {
int rollno = executeQuery.getInt("id");
System.out.println("rollno " + executeQuery.getString("id") + " name " + executeQuery.getString("name"));
if (rollno == 1) {
executeQuery.updateString("NAME", "new value");
executeQuery.updateRow();
}
}
Note. A query cannot use SELECT * from table
注意。查询不能使用表中的SELECT *
更多相关文章
- 将下面语句插入到SQLSERVER数据库中出现“将字符串转换为 unique
- 老鸟帮帮忙:能用字数最少的SQL语句来实现以下查询功能吗?分虽少但
- 用sql语句如何实现小数位数四舍六入,小数位数是五的不变?
- sqlserver各种注释语句的写法
- 关于sql语句的多重循环
- 深度探索 -- 生成SQL语句的向导应如何做?
- 检索SQL语句的输出参数
- oracle:使用cmd命令在远程oracle服务器上执行sql语句
- SQL语句字符串