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(); } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步