日期:2014-05-20  浏览次数:20913 次

关于结果集的问题
TYPE_SCROLL_INSENSITIVE:双向滚动结果集,不受Result底层数据更改的影响。

TYPE_SCROLL_INSENSITIVE:双向滚动结果集,受Result底层数据更改的影响。

什么叫受或者不受Result底层数据更改的影响?


另外CONCUR_READ_ONLY和CONCUR_UPDATETABLE用的时候有什么区别?

------解决方案--------------------


可滚动结果集——这种结果集不但可以双向滚动,相对定位,绝对定位,并且可以修改数据信息。

 

方法说明

 

next(),此方法是使游标向下一条记录移动。

previous() ,此方法可以使游标上一条记录移动,前提前面还有记录。

absolute(int row),可以使用此方法跳到指定的记录位置。定位成功返回true,不成功返回false,游标不会移动。

afterLast() ,游标跳到最后一条记录之后。

beforeFirst() ,游标跳到第一条记录之前。(跳到游标初始位)

first(),游标指向第一条记录。

last(),游标指向最后一条记录。

relative(int rows) ,相对定位方法,参数值可正可负;参数为正,游标从当前位置向下移动指定值,参数为负,游标从当前位置向上移动指定值。

TYPE_FORWARD_ONLY ,该常量指示指针只能向前移动的ResultSet对象的类型。

TYPE_SCROLL_INSENSITIVE ,该常量指示可滚动但通常不受其他的更改影响的ResultSet 对象的类型。

TYPE_SCROLL_SENSITIVE ,该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。


要使用可滚动结果集时,要在Statement创建时指定参数,才可以使用

Statement st=null;

st=con.createStatement(ReusltSet.TYPE_SCROLL_INSENSITIVE,ResuleSet.CONCUR_UPDATABLE);

ResultSet结果集中,先使用moveToInsertRow(),将游标移到和结果集结构类似的缓冲区中,然后可以使用updateXxx(int column,columnType value)方法来更新指定列数据,再使用insertRow() 方法插入记录,最后将游标指回原位:moveToCurrentRow() 。

能否使用可更新结果集,要看使用的数据库驱动是否支持;

可更新结果集只能用于单表且表中有主键字段(可能会是联合主键),不能够有表连接。