关于ResultSet结果集的问题

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的使用之类的问题,官方文档的解释最为权威准确。
实际上遇到的大部分问题在文档中都能找到答案。

如果对您有帮助,请采纳答案好吗,谢谢!