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

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,可能思想不一样

芜湖不芜
浏览 1135回答 1
1回答

斯蒂芬大帝

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

相关分类

JavaScript