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