jdbc 处理mysql procedure返回的多个结果集
1:测试数据库表user
mysql> desc user$$
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| name | varchar() | YES | | NULL | |
| age | int() | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
rows in set (0.00 sec)
2:存储过程,返回id>n_id 的与id<n_id的两个结果集
delimiter $$
create procedure p_get_user_list(in n_id int)
begin
select id, name, age from user where id > n_id;
select id, name, age from user where id < n_id;
end $$
3:JDBC操作
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/ package jdbctest;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger; /**
*
* @author y
*/
public class Jdbctest { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
funtest();
} public static void funtest(){
Connection conn = null;
CallableStatement calState = null;
ResultSet rs = null; try {
Class.forName("com.mysql.jdbc.Driver");
conn = (Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", ""); calState = conn.prepareCall("{call p_get_user_list(?)}");
calState.setInt(1, 3); boolean oprFlag = calState.execute();
//使用外循环来控制结果集的个数,内循环控制每个结果集的记录
while(oprFlag){
rs = calState.getResultSet();
System.out.println("=================");
while(rs.next()){
System.out.println("id:"+rs.getInt("id")+"\t"+
"name:"+rs.getString("name")+"\t"+
"age:" +rs.getInt("age"));
}
oprFlag = calState.getMoreResults();
}
}catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(Jdbctest.class.getName()).log(Level.SEVERE, null, ex);
}finally{
if(null !=rs ){
try {
rs.close();
} catch (SQLException ex) {
Logger.getLogger(Jdbctest.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(null != calState){
try {
calState.close();
} catch (SQLException ex) {
Logger.getLogger(Jdbctest.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(null != conn){
try {
conn.close();
} catch (SQLException ex) {
Logger.getLogger(Jdbctest.class.getName()).log(Level.SEVERE, null, ex);
}
}
} } }
4:测试结果
run:
=================
id: name:test2 age:
id: name:test3 age:
=================
id: name:里斯 age:
id: name:王五 age:
成功构建 (总时间: 秒)
jdbc 处理mysql procedure返回的多个结果集的更多相关文章
- mysql procedure返回多数据集
返回多数据集写法:第一种 DROP PROCEDURE IF EXISTS `p_query_user` ; DELIMITER // CREATE PROCEDURE p_query_user( p ...
- java通过jdbc访问mysql,update数据返回值的思考
java通过jdbc访问mysql,update数据返回值的思考 先不说那么多,把Java代码贴出来吧. public static void main(String[] args) throws I ...
- Java基础93 JDBC连接MySQL数据库
本文知识点(目录): 1.什么是jdbc 2.jdbc接口的核心API 3.使用JDBC技术连接MySQL数据库的方法 4.使用Statement执行sql语句(DDL.DML. ...
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- java jdbc连接mysql
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一 ...
- jdbc操作mysql
本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...
随机推荐
- npm install 本地安装与全局安装
npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已: npm install grunt # 本地安装 npm install -g gr ...
- SqlServer计算周岁的函数
CREATE Function Dbo.GetAge ( @birthday datetime, @now datetime ) Returns int As Begin Declare @Age i ...
- linux type 命令和Linux的五个查找命令
type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shel ...
- android UI之Shape详解_GradientDrawable
在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决.不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片. 这样就容易使apk变大. 那 ...
- 通过基于 Linux 的软件 VPN 设备连接到 Windows Azure 虚拟网络
摘要 本文章将说明如何通过使用软件 VPN 设备,将本地办公室或站点连接到 Windows Azure 虚拟网络.在构建原型或在构建可以尽快利用云的"开发/测试"工作流时,软件VP ...
- 关于UIButton中的ContentEdgeInsets的深入研究
UIButton的contentEdgeInsets属性的深入研究 由于用UIButton这个属性做过一些东西,但是对它的规律始终不太了解,虽然苹果官方文档的解释大体上可以理解为,这个属性设置的是内边 ...
- linux 网络Socket实战
Preface:就算调通API,也不值得太过自豪!!!悉心细心学习,最好的深度学习就是看-学...*.h/*.class ProtoType; 1,linux C ftp C/S简单实现 ftpS端码 ...
- Python与MySQL首次交互
前两天在工作之余研究了一下Python,对基础有了大致了解,就想拿她很MqSQL交互一下. 一开始就遇到了问题,要import MySQLdb,search发现有人说安装mysql-python,于是 ...
- 在iOS上present一个半透明的viewController
UIViewController *viewController = [[UIViewController alloc]init]; UIViewController* controller = se ...
- STS(Spring Tool Suite)使用前准备
sts 的基础框架拿的eclipse的,你可以理解为eclipse + spring插件的高级升华版.在使用上可以很大限度的参考eclipse的操作. 首先,调整字体. 中文很麻烦的,因为编码问题.习 ...