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返回的多个结果集的更多相关文章

  1. mysql procedure返回多数据集

    返回多数据集写法:第一种 DROP PROCEDURE IF EXISTS `p_query_user` ; DELIMITER // CREATE PROCEDURE p_query_user( p ...

  2. java通过jdbc访问mysql,update数据返回值的思考

    java通过jdbc访问mysql,update数据返回值的思考 先不说那么多,把Java代码贴出来吧. public static void main(String[] args) throws I ...

  3. Java基础93 JDBC连接MySQL数据库

    本文知识点(目录): 1.什么是jdbc     2.jdbc接口的核心API     3.使用JDBC技术连接MySQL数据库的方法    4.使用Statement执行sql语句(DDL.DML. ...

  4. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

  5. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. java jdbc连接mysql

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  8. JDBC连接MySQL数据库及示例

      JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一 ...

  9. jdbc操作mysql

    本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...

随机推荐

  1. sort详解

    一. 简介 sort命令是帮我们依据不同的数据类型进行排序. 二. 语法 sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序(默认为 ...

  2. Digit Stack

    Digit Stack In computer science, a stack is a particular kind of data type or collection in which th ...

  3. dubbo初体验

    最近需要开发部门中某个大数据量的提取的功能,加到了一个ElasticSearch的群.在群里听说到一个框架叫dubbo,阿里系开源软件.听到群友谈的神乎其神的,什么什么功能切分多协议栈,高并发等等等. ...

  4. (heap)239. Sliding Window Maximum

    题目: Given an array nums, there is a sliding window of size k which is moving from the very left of t ...

  5. C++小知识之sprintf用法

    sprintf   字串格式化命令,主要功能是把格式化的数据写入某个字符串中.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf ...

  6. poj 1759 Garland (二分搜索之其他)

    Description The New Year garland consists of N lamps attached to a common wire that hangs down on th ...

  7. python 给lambda命名(网友处学习)

    from os import * def set_name(**k): assert len(k)==1 name,obj=k.items()[0] obj.func_name=name return ...

  8. pyqt字符串分离开,放入列表中

    string1 = ''''' the stirng Has many line In THE fIle ''' list_of_string = string1.split() print list ...

  9. sql求和涉及到null值

    SQL ISNULL().NVL().IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice ...

  10. Session,有没有必要使用它?

    阅读目录 开始 Session的来龙去脉 Session对并发访问的影响 Session的缺点总结 不使用Session的替代方法 Asp.net MVC 中的Session 现有的代码怎么办? 今天 ...