为了账号安全,请及时绑定邮箱和手机立即绑定

为什么ResultSet的getInt一定要包括在if rs.next()里面?

为什么ResultSet的getInt一定要包括在if rs.next()里面?

芜湖不芜 2018-10-09 17:26:29
sql = "insert into news_base(fid,title,date,author) values("+fid+",'"+title+"','"+dateValue+"','Admin')";            statement = connection.createStatement();            statement.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);            ResultSet rs = statement.getGeneratedKeys();            if(rs.next()){                System.out.println(rs.getInt(1));            }以上代码是 正常的。。但是System.out.println(rs.getInt(1));把if rs.next() 去掉 就报错 java.sql.SQLException: Before start of result set刚学java不久 求java高手讲解之前一直写的是js,可能思想不一样
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

可以把 ResultSet 理解为 带头结点的单向链表,初始时 指针 指向头结点next() 方法就是用来将 指针 向后移动一个位置 —— 如果该位置有数据,那么 next() 返回 true,否则返回 false。一般在数据库操作中,我们把这个 “指针” 称作 “游标”。
所以,如果你不写 if (rs.next()),那么第一次使用 rs 也就没有调用 rs 的 next() 方法,那么此时游标就处于 “头结点” 的位置,但是 “头结点” 只是一个标识,是没有数据的,因而抛出了异常。

查看完整回答
反对 回复 2018-11-09
  • 1 回答
  • 0 关注
  • 1132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信