ResultSet rs = stmt.executeQuery("select count(*) from article where pid = " + pid);
rs.next();
int count = rs.getInt(1);
代码已贴上,假设我想从数据库中取出 pid=1 的数据的条数
当我成功执行ResultSet rs = stmt.executeQuery("select count(*) from article where pid = " + pid);之后 不就已经得到一个返回的结果集了吗?
为什么直接 int count = rs.getInt(1)这样使用不对?
这里rs.next(); 的作用是什么?不懂为什么 没有 rs.next();会报错
stmt.executeQuery 执行的时候相当于查询出结果集,使用rs.next()是把游标指定到某一个位置,例如第一次使用rs.next()把游指向第一行,
这样在rs.getInt(1)的时候才能有值。我是这样理解的,希望能帮到你。
ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。
以上是JDK API里面对于ResultSet接口的说明,简单说,当你执行查询之后,rs指向返回结果第一行的上面,为null,此时rs.getInt()无法获取数据,因此需要rs.next()将光标下移,指向返回结果的第一条数据
建议直接阅读官方文档对next方法的说明:
https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next()
类似API的使用之类的问题,官方文档的解释最为权威准确。
实际上遇到的大部分问题在文档中都能找到答案。
如果对您有帮助,请采纳答案好吗,谢谢!