Atitit  jdbc 处理返回多个结果集

Atitit  jdbc 处理返回多个结果集

Statement接口提供了三种执行SQL语句的方法: 
executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。 
executeQuery   方法用语返回单个结果集 
execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知SQL字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。例如,用户可能执行一个已存储过程,并且该已存储过程可执行更新,然后执行选择,再进行更新,再进行选择,等等。通常使用已存储过程的人应知道它所返回的内容。

  因为方法execute处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法execute执行该过程后,必须调用方法getResultSet获得第一个结果集,然后调用适当的getXXX方法获取其中的值。要获得第二个结果集,需要先调用getMoreResults方法,然后再调用getResultSet方法。如果已知某个过程返回两个更新计数,则首先调用方法getUpdateCount,然后调用getMoreResults,并再次调用getUpdateCount。

1. SET NOCOUNT ON;

2. update TABLEA SET A=‘aa‘;--假设共100条数据被修改

3. SELECT * FROM TABLEA;

调用callableStatement.execute();后callableStatement指向受影响的计数行,当你再调用rs = callableStatement.getResultSet();  的时候,结果集rs 为空。 无法查询出表TABLEA 的数据Statement提供了一个getMoreResults()的方法,该方法能将当前Statement "指针" 移动到下一个结果集。如果callableStatement.getUpdateCount()==-1&&getMoreResults()==true的话表明当前statement对象正指向一个真正的结果集。

java jdbc返回多个结果集,的处理类和方法 - GetStudyMessages的专栏 - 博客频道 - CSDN.NET.html

JDBC更新计数行及调用存储过程返回多个结果集详解 - 51CTO.COM.html

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:[email protected]

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke交友协会会长  uke捕猎协会会长 Emir Uke部落首席大酋长,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

uke 首席cto   软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理   uke科技研究院院长 uke软件培训大师

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

uke终身教育学校副校长   Uke医院 与医学院方面的创始人

uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

Uke图像处理与机器视觉学院首席院长

Uke 户外运动协会理事长  度假村首席大村长   uke出版社编辑总编

转载请注明来源:attilax的专栏  ?http://www.cnblogs.com/attilax/

--Atiend  v8

时间: 2024-08-05 07:53:39

Atitit  jdbc 处理返回多个结果集的相关文章

JDBC连接数据库返回结果集的Key值

JDBC连接数据库查询数据时时返回ResultSet结果集.ResultSet中存放键值对.我们可以首先取得Key值,然后通过key值获取我们想要的value.那么我们如何获取Key值呢?看下面代码: try { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); rs = getStmt().executeQuery(sql); // 得到结果集ResultSet的结

Oracle :一次数据库连接,返回多个结果集

gooliugle 原文 Oracle :一次数据库连接,返回多个结果集(带参数)! 1.建立包规范 create or replace package QX_GDJTJ is -- Author : xxx -- Created : 2012-1-1 -- Purpose : 统计主设备缺陷 TYPE T_CURSOR IS REF CURSOR; PROCEDURE GETGDJQXTJ ( cur_id in varchar, cur_GDJQXTJ1 OUT T_CURSOR, cur_

JDBC(4)-Result结果集

1.Result结果集的引入 当我们查询数据库时,返回的是一个二维的结果集,我们这时候需要使用ResultSet来遍历结果集,获取每一行的数据. 2.使用Result遍历查询结果 boolean next():将光标从当前位置向前移一行. String getString(int columnIndex):以java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值. String getString(int columnLabel):以java编程语言中String的

JDBC ResultSet 可更新的结果集

接着上一篇:可滚动的结果集: 1)com.microsoft.sqlserver.jdbc.SQLServerException: 结果集不可更新. 当concurrency设置为:ResultSet.CONCUR_READ_ONLY(默认)时,结果集不能更新数据,否则会报 SQLServerException 示例: statement = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_R

Spring JDBC查询返回对象代码跟踪

在封装方法的时候突然发现通过 ResultSetMetaData的getColumnCount()获取到的列明会多一列(ROWSTAT),而且每次的值都是1,目前没有找到相关信息,在国外网站上看到有类似的情况,但是都没有人回答.于是想到spring 的JDBC部分是怎么实现映射的,于是通过spring的源代码发现了大致的流程: (这里先说明一下自己得到收获:spring的query查询返回对象T的方法是首先获取要返回对象的所有的writeMethod,也就是set方法,然后存放在一个Proper

php查询mysql返回大量数据结果集导致内存溢出的解决方法

web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答案是: mysql_query 和 mysql_unbuffered_query 两个函数 首先来分析一个典型的实例:在执行下面的代码的时候就会导致php请求mysql返回结果太多(10W以上)导致PHP内存不够用. while ($row = mysql_fetch_assoc($result))

存储过程返回多个实体集

枚举的默认值,是基础类型的值为0对应的枚举值(如果没有对应的枚举值则默认值为0) 在使用NuGet安装实体框架时,migrate.exe位于下载包的tools文件夹中,在 <项目文件夹>\packages\EntityFramework.<版本>\tools 中 有了 migrate.exe 之后,需要将其复制到包含迁移的程序集位置. ModeFist方式生成表结构时,在 EF 设计器中,右键单击模型上的空位置,选择“添加代码生成项...”,可以生成DbContext上下文 使用E

ibatis.net调用oracle存储过返回游标SYS_REFCURSOR结果集

最近在用ibatis.net框架和oracle 11g开发一套程序.其中有一个需求就是通过存储过程,查询指定条件的数据集. 但是在开发的过程中遇到了问题,问题如下: 1.如何通过ibatis.net执行存储过程? 2.通过ibatis.net执行存储过程时,如何传参数? 3.通过ibatis.net执行存储过程时,传递参数过程中,dbType和type是如何对应的? 4.oracle存储过程中返回的游标集合SYS_REFCURSOR对应dbType是什么? 5.通过ibatis.net执行存储过

[转].net 调用oracle存储过程返回多个记录集

CREATE OR REPLACE PROCEDURE p_query_cs ( p_infotype IN VARCHAR2, p_fromareacode IN VARCHAR2, p_toareacode IN VARCHAR2, p_keytype IN NUMBER, r_cursor1 OUT sys_refcursor, --结果集 r_cursor2 OUT sys_refcursor --结果集 ) IS BEGIN OPEN r_cursor1 FOR SELECT * FR