JavaEE JDBC ResultSet内外移动

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定位下一个结果集

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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();
 
}

  

 

posted @   ixenos  阅读(311)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示