Statement stmt= conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY) ;
------解决方案--------------------
这个查看API有很好的解释
createStatement
Statement createStatement(int resultSetType,
int resultSetConcurrency)
throws SQLException创建一个 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。此方法与上述 createStatement 方法相同,但它允许重写默认结果集类型和并发性。
参数:
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE 之一
resultSetConcurrency - 并发类型;它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一
返回:
一个新的 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型和并发性的 ResultSet 常量
从以下版本开始:
1.2
------解决方案--------------------
static int TYPE_SCROLL_SENSITIVE
该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。
------解决方案--------------------
这样的作用主要是可以使产生的ResultSet可以使用一些.first(),last()直接跳至的方法.
------解决方案--------------------
query=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
不带参数使用默认值:
createStatement()
=createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)
1.TYPE_FORWORD_ONLY,只可向前滚动;
2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据。