关于结果集的问题
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() 。
能否使用可更新结果集,要看使用的数据库驱动是否支持;
可更新结果集只能用于单表且表中有主键字段(可能会是联合主键),不能够有表连接。