ResultSet内外移动

@author ixenos

内外移动指位置光标的移动


内移动就是一个ResultSet得到后的那个光标!

外移动就是多个ResultSet的迭代

内移动


一般的数据库都不允许单个查询提交多个SELECT语句,

1.execute执行SQL语句后,返回一个结果集ResultSet,

2.其中有个光标next在第一个元组之前(想象一下),调用hasNext就会判断光标下一个元组存不存在

3.rs.next定位行(元组triple),rs.getXXX定位列(字段field)

外移动


在执行存储过程中、或某些允许单个查询提交多个SELECT语句的操作中,可能会返回多个结果集

1.使用execute方法执行SQL语句,将获取第一个结果集或更新计数,

2.重复调用getMoreResults方法,将移动ResultSets的光标到下一个结果集,

3.当不存在更多的结果集或更新计数时,完成操作

4.stat.getResultSet定位当前结果集,stat.getUpdateStatement更新计数,stat.getMoreResults定位下一个结果集

boolean isResult = stat.execute(sql);

Boolean done = false;

while(!done){

      if(isResult){

           ResultSet result = stat.getResultSet();

           。。。

      }else{

           int updateCount = stat.getUpdateCount();

           //isResult是false,但count!=-1,说明存在SQL操作但不返回结果集

           if(updateCount >= 0){

                 。。。

           }else{

                 //count是-1时,说明getMoreResults没有结果集了,也没有别的SQL操作,此时退出

                 Done = true;

           }

      }

      if(!done)  isResult = stat.getMoreResults();

}

  

JavaEE JDBC ResultSet内外移动的更多相关文章

  1. java jdbc ResultSet结果通过java反射赋值给java对象

    在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. ...

  2. 由DB2分页想到的,关于JDBC ResultSet 处理大数据量

    最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as r ...

  3. JavaEE JDBC 可滚动和可更新的结果集ResultSet

    可滚动和可更新的结果集ResultSet @author ixenos 需求背景 1.对于一个只需要分析数据的程序来说,普通的ResultSet已够用 2.但如果ResultSet用于显示一张表或查询 ...

  4. 将JDBC ResultSet结果集变成List

    private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>() ...

  5. javaEE jdbc编程步骤

    1.载入数据库驱动(jar文件) //须要下载一个数据库的jar包,并导入对应的JDBC项目中,创建路径! Class.forName("com.mysql.jdbc.Driver" ...

  6. 将JDBC ResultSet结果集转成List

    private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>() ...

  7. 由于使用JDBC ResultSet的滚动功能而导致的内存溢出

    前天一去公司,老大说,服务器全挂了! 最后排查了半天,结论是内存溢出! 在WAS的DUMP日志中,看得我头晕眼花,终于找到了罪魁祸首,原来是有同事写代码的时候使用了可滚动的结果集导致内存溢出. 什么是 ...

  8. [javaEE] JDBC快速入门

    JDBC:Java Data Base Connectivity java数据库连接 1.组成JDBC的两个包:主要是接口 java.sql javax.sql 2.相应JDBC的数据库实现 在tom ...

  9. JDBC ResultSet分析

    JDBC1.0 .JDBC2.0 .JDBC3.0 中分别用以下方法创建Statement . JDBC1.0 : createStatement() JDBC2.0 : createStatemen ...

随机推荐

  1. bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...

  2. ACM_回文素数

    回文素数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 131号是一个主回文,因为它是一个素数和一个回文(当向后读时,它是相同的 ...

  3. android:fillViewport="true"让ScrollView内的view强行match_parent

    当你想让一个高度值不足scrollview的子控件fillparent的时候,单独的定义android:layout_height="fill_parent"是不起作用的,必须加上 ...

  4. Join方法,yield方法,线程的优先级

  5. 441 Arranging Coins 排列硬币

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币.给定一个数字 n,找出可形成完整阶梯行的总行数.n 是一个非负整数,并且在32位有符号整型的范围内.示例 1:n ...

  6. 设置电脑IP

    1.首先在Win7桌面上找到“网络”入口,如下图:   进入Win7网络 2.进入网络之后我们再点击顶部的“网络共享中心”,如下图:   进入Win7网络共享中心 3.进入Win7网络共享中心之后,我 ...

  7. 详解Android Activity启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...

  8. iOS Programming Editing UITableView

    iOS Programming Editing UITableView 1.1 Editing mode  UITableView has an editing property, and when ...

  9. R in action读书笔记(9)-第八章:回归 -回归诊断

    8.3回归诊断 > fit<-lm(weight~height,data=women) > par(mfrow=c(2,2)) > plot(fit) 为理解这些图形,我们来回 ...

  10. Node.js——Stream

    介绍 文件流:我们一般对大一点的文件实现stream的方式进行操作 http:显然http.createServer创建过程中的IncomingMessage实现了可读流的接口,ServerRespo ...