关于jdbc中ResultSet的next()方法

来源:百度知道 编辑:UC知道 时间:2024/07/01 05:02:52
jdbc中 ResultSet的next()方法
老师说是从第一条开始读取 然后又回到第一条 请问是这样的吗?我怀疑是老师说错了啊

既然怀疑就查资料验证呗,看 JDK API 最权威,这是JDK API 中关于 ResultSet 的 next 函数详解,一目了然:

boolean next() throws SQLException
将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。
当调用 next 方法返回 false 时,光标位于最后一行的后面。任何要求当前行的 ResultSet 方法调用将导致抛出 SQLException。如果结果集的类型是 TYPE_FORWARD_ONLY,则其 JDBC 驱动程序实现对后续 next 调用是返回 false 还是抛出 SQLException 将由供应商指定。
如果对当前行开启了输入流,则调用 next 方法将隐式关闭它。读取新行时,将清除 ResultSet 对象的警告链。
返回:
如果新的当前行有效,则返回 true;如果不存在下一行,则返回 false
抛出:
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法

又API知道,next()方法一开始定位在第一行前面,所以用之前你的 next() 以下(一般入门人员很容易在这里出错)才能得到第一行数据,next到最后了会定位在最后一行的后面,不会自动回到第一行的。

老师说的意思你没听明白,数据库取出来的记录是从0开始的,那么next()--下一条,自然取的是第一条了,当然了如果你当前指针指在了第三条上,那么next取的就是第四条了。

next 相当于指针 ,它的起始位置是在结果集的第一条数据之前的,而不是正指着第一条数据本身 ,循环条件下执行一次后 才指向第一条数据 ,同理 当指到最后一条数据再执行一次后 它的位置是最后一条数据的下方 不知道你老师的意思是不是这样

你数据库放3条,自己DUBUG看看效果

第一次调用的时候,读取第一行;再次调用的时候,读取下一行。