JDBC 如何使用可滚动 可更新结果集
2011-09-09 17:19
417 查看
从JDBC 2.0后:
1. ResultSet就可以在结果集上前后移动并且可以跳转到结果集中的任何位置;
2. 支持可更新的结果集,直接在ResultSet里边修改数据,并且同步到数据库中。
这两个新特性都是在创建新会话时指定的,语法如下:
其中:
type_SCROLL类型可以为以下值:
type_UPDATEABLE类型可以为以下值:
示例:
滚动特性:
next(),此方法是使游标向下一条记录移动。
previous() ,此方法可以使游标上一条记录移动,前提前面还有记录。
absolute(int row),可以使用此方法跳到指定的记录位置。定位成功返回true,不成功返回false,返回值为false,则游标不会移动。
afterLast() ,游标跳到最后一条记录之后。
beforeFirst() ,游标跳到第一条记录之前。(跳到游标初始位)
first(),游标指向第一条记录。
last(),游标指向最后一条记录。
relative(int rows) ,相对定位方法,参数值可正可负,参数为正,游标从当前位置向下移动指定值,参数为负,游标从当前位置向上移动指定值。
1. ResultSet就可以在结果集上前后移动并且可以跳转到结果集中的任何位置;
2. 支持可更新的结果集,直接在ResultSet里边修改数据,并且同步到数据库中。
这两个新特性都是在创建新会话时指定的,语法如下:
Statement stmt = conn.createStatement(sql, type_SCROLL/type_UPDATEABLE, concurrency); PreparedStatement pstmt = conn.preeparedStatement(sql, type_SCROLL/type_UPDATEABLE, concurrency);
其中:
type_SCROLL类型可以为以下值:
TYPE_FORWARD_ONLY: 结果集不能滚动 TYPE_SCROLL_INSENSITIVE: 结果集可以移动,但是对数据库变化不敏感,数据库查询生成结果集后发生了变化,结果集不发生变化 TYPE_SCROLL_SENSITIVE: 结果集可以移动,但是对数据库变化敏感
type_UPDATEABLE类型可以为以下值:
CONCUR_READ_ONLY: 结果集不能用于更新数据库 CONCUR_UPDATEABLE: 结果集可以用于更新数据库
示例:
public ConcurrentLinkedQueue getStockInfoQueue(String table, String stockCode ){ //从数据库中取出股票信息,保存到队列,并返回队列 ConcurrentLinkedQueue<RTmm> clq = new ConcurrentLinkedQueue<RTmm>(); String sql = "select * from "+table +" where s_code = '" +stockCode+"'"; String sql2 = "select count(*) from "+table +" where s_code = '" +stockCode+"'"; try { Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //可滚动结果集 ResultSet rs2 = stmt.executeQuery(sql2); rs2.last(); System.out.println("记录数"+rs2.getInt(1)); int records = rs2.getInt(1); //得到记录个数 ResultSet rs = stmt.executeQuery(sql); if(records < 60){ while(rs.next()){ String code = rs.getString(1); String time = rs.getString(3); double open = rs.getDouble(4); double close = rs.getDouble(5); double low = rs.getDouble(6); double high = rs.getDouble(7); // RTmm(String code, String dt, double low, double open, double close, double high) // System.out.println(code+time+open+" "+close+" "+high); RTmm rtmm = new RTmm(code.trim(), time.trim(), low, open, close, high); clq.add(rtmm); } }else{ rs.absolute(records - 60); while(rs.next()){ String code = rs.getString(1); String time = rs.getString(3); double open = rs.getDouble(4); double close = rs.getDouble(5); double low = rs.getDouble(6); double high = rs.getDouble(7); // RTmm(String code, String dt, double low, double open, double close, double high) // System.out.println(code+time+open+" "+close+" "+high); RTmm rtmm = new RTmm(code.trim(), time.trim(), low, open, close, high); clq.add(rtmm); } } } catch (SQLException e) { e.printStackTrace(); } return clq; }
滚动特性:
next(),此方法是使游标向下一条记录移动。
previous() ,此方法可以使游标上一条记录移动,前提前面还有记录。
absolute(int row),可以使用此方法跳到指定的记录位置。定位成功返回true,不成功返回false,返回值为false,则游标不会移动。
afterLast() ,游标跳到最后一条记录之后。
beforeFirst() ,游标跳到第一条记录之前。(跳到游标初始位)
first(),游标指向第一条记录。
last(),游标指向最后一条记录。
relative(int rows) ,相对定位方法,参数值可正可负,参数为正,游标从当前位置向下移动指定值,参数为负,游标从当前位置向上移动指定值。
相关文章推荐
- JDBC 如何使用可滚动 可更新结果集
- Java - 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
- 如何使用jdbc template查询数据,而用ibatis组装结果?
- JDBC可滚动可更新结果集的探究(来自网络)
- JDBC可滚动可更新感知更新结果集
- JDBC可滚动和可更新结果集
- JDBC之处理可滚动的结果集和可更新的结果集
- 使用jdbc更新数据时间时如何屏蔽各种数据库的差异性
- 关于JDBC(四)--- 可滚动和可更新结果集
- 如何使用 Visual C# .NET 从 DataSet 对象更新数据库
- RedHat 6.0(64位)如何使用CentOS YUM源更新的方法
- Delphi中的DBGrid如何实现使用鼠标滚轮上下滚动
- Elasticsearch JDBC的使用-MySQL 数据源导入和增量索引、更新
- 如何开始使用 Microsoft JDBC
- 使用 NuGet 更新套件時將 jQuery 升級到 2.0.2 應該如何降級
- 如何使用Web Service新建和更新Wiki页面的内容
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- Android经验之如何使用JDBC连接数据库
- sql server 2008 如何使用正则更新替换字段内容
- 如何在Jbuilder9中使用SQLServer JDBC驱动