jdbc调用存储过程获取多个结果集
jdbc调用存储过程获取多个结果集
2017年07月26日 21:20:22 Kenny-Liu 阅读数:1486
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L2388399752/article/details/76165734
这几天,公司重构一套erp,用到很多存储过程,但我在用jdbc调用存储过程的时候发现无法接收多个结果集(存储过程select返回的Result),而且国内很难找到解决方案,今天下午花了一下午,最后终于实现了。 Connection conn = JdbcUtil.getConnection(); CallableStatement stmt = null; //通过sqlserver exec方法调用存储过程
stmt = conn.prepareCall("EXEC dbo.sp_Query_GetVehiceTimeOuts '01'");
//jdbc通用语法为
// stmt = conn.prepareCall("{call dbo.sp_Query_GetVehiceTimeOuts(?)}");
// stmt.setString(1, "01"); boolean hashResult = stmt.execute();
while (true) {
//判断本次循环是否为数据集
if (hashResult) {
System.out.println("为数据集");
ResultSet rs = stmt.getResultSet();
// Do something with resultset ...
while (rs.next()){
System.out.println(rs.getString(1));
}
} else {
System.out.println("本次不为数据集");
int updateCount = stmt.getUpdateCount();
if (updateCount == -1) {
/*
当updateCount为-1时,
代表存储过程返回的最后一条数据集
跳出循环
*/
System.out.println("最后一次");
break;
}
// Do something with update count ...
}
/*
每次判断下一个是否为了数据集
stmt.getMoreResults() 为 true表示下一次循环为数据集,false为空
*/
hashResult = stmt.getMoreResults();
System.out.println(hashResult);
} 大体的逻辑就是 首先是死循环, 然后判断提交sql返回的收个数据是否为结果集, 如果是就进入结果集处理,如果不是,通过getUpdateCount方法获取下一个结果,并判断getUpdateCount结果是否为-1,-1代表最后一条结果集,当结果为-1时跳出循环,否则继续循环该段代码
jdbc调用存储过程获取多个结果集的更多相关文章
- Java数据库连接——JDBC调用存储过程,事务管理和高级应用
一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...
- Java数据库连接--JDBC调用存储过程,事务管理和高级应用
相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...
- oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作
jdbc调用存储过程 使用并获得out模式的参数返回值 //存储过程为sum_sal(deptno department.deptno%type,sum in out number) Callable ...
- JDBC调用存储过程
一. JDBC调用存储过程 (1)使用存储过程SQL编写的程序代码,等一段语句和控制流语句.在创建时被编译成机器代码和存储在数据库中的client转让. 存储过程具有以下优势: 1.所生成的机器代码被 ...
- JDBC调用存储过程的例子
下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...
- JDBC(13)—JDBC调用存储过程和函数
步骤: JDBC调用存储过程和函数 步骤: ①:通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例,在使用Connection对象的pre ...
- jdbc调用存储过程的方法
----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...
- Java JDBC调用存储过程:无参、输入带参、输出及输出带参
Java JDBC调用存储过程:无参.输入带参.输出及输出带参 示例代码: package xzg; import java.sql.CallableStatement; import java.sq ...
- JDBC调用存储过程,进参出参
今天做了一个数据表拷贝的功能,用到了存储过程,就写了一个java中用jdbc调用存储过程的代码,成功的实现了功能,晚上跑回家记录下 Connection conn = ConnectionUtil.g ...
随机推荐
- 日志聚合工具loki
目录 1.loki是什么 2.loki特点 3.loki组成 4.loki安装 4.1.添加helm的chart库 4.2.安装loki及promtail 4.3.安装grafana 5.配置和使用 ...
- Windows与Linux之间海量文件的传输与Linux下大小写敏感问题
Windows与Linux之间海量文件的传输与Linux下大小写敏感问题 mount.cifs 支持通过网络文件系统挂载,不过需要安装cifs-utils,也可通过mount -t cifs挂载,详细 ...
- NGINX状态模块的使用
nginx状态模块可以用来查看当前nginx服务器的并发量和总的请求数 启用nginx的状态模块 状态模块需要在编译安装的时候启用. 1.下载nginx源码包 2.安装nginx并启用模块 3.修改n ...
- pip的安装、以及使用方法。
pip类似RedHat里面的yum,安装Python包非常方便.本节详细介绍pip的安装.以及使用方法. 1.pip下载安装 1.1 pip下载 1 # wget "https://py ...
- iOS 测试在应用发布前后的痛点探索以及解决方案
作者-芈 峮 前言 iOS 开发从 2010 年开始在国内不断地升温,开发和测试相关的问题不绝于耳.iOS 测试主要涉及哪些内容?又有哪些挑战呢?带着疑问我们开始第一个大问题的讨论. iOS 测试的范 ...
- 数组函数some、every、find、filter、map、forEach有什么区别
- oracle 将与本端(name)联系的人取出
本人与其他所有人认识的SQL: 首先新建测试表 create table DIM_IA_TEST6 ( NAME ), OTHERNAME ) ) 插入数据 --如果没有重复的记录,则不用去重使用un ...
- 机房断电,导致xfs文件系统损坏
记一次机房断电,导致xfs文件系统损坏处理方法 挂载时报以下错误: mount: mount /dev/sdb on /dev/sdb failed: Structure needs cleaning ...
- vs下载代码
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012605477/article/details/62222919Visual Studio 20 ...
- Dubbo源码分析:Serialization
背景 顺序化逻缉处理! 类图 获取Serialization对象时序图 序列化