首页 > 代码库 > 对只转发结果集的无效操作 first

对只转发结果集的无效操作 first

今天只用jdbc连接Oracle查询结果时,出现了一个: 对只转发结果集的无效操作 first 的错误java.sql.sqlexception。

出现这个结果的原因是:使用 Statement ste = this.con.createStatement();这种方式获得的
tatement 只使用默认方式的 ResultSet。它只能通过 next()方法来进行遍历。如果使用 first()或者 last()方法就会出错。
解决的方法很简单:如下
PreparedStatement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

或者就不要使用 first() 和 last() 方法。只使用 next() 方法遍历


顺便简单介绍一下各个参数:

1. ResultSet.TYPE_FORWARD_ONLY (略)
2. ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3. ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
4. ResultSet.CONCUR_READ_ONLY 只读取ResultSet
5. ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库