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()
方法,那么此时游标就处于 “头结点” 的位置,但是 “头结点” 只是一个标识,是没有数据的,因而抛出了异常。
添加回答
举报
0/150
提交
取消