Java获取存储过程返回的多个结果集
来源:互联网 发布:java小程序输出语句 编辑:程序博客网 时间:2024/05/18 03:17
转http://bbs.csdn.net/topics/300115606
第一步:写你的存储过程
delimiter //
create procedure test_proc ()
begin
select * from test_table1 where id=1;
select * from test_table2 where id=2;
select * from test_table3 where id=3;
end;
//
delimiter ;
call test_proc()这样就可以返回三个结果集,每个结果集对应一个select。
那么在JAVA程序里面如何来取得这三个结果集呢?!
这样做:
boolean bl = false;
ResultSet = null;
Connection con = new Connection();
con="得到一个有效的连接"
String strSql="{CALL test_proc()}";
CallableStatement cstm=con.prepareCall(strSql);
bl=cstm.execute();----若存储过程被正常执行,并至少有一个结果集返回,则bl=true;否则就会是bl=false;
while(bl){
rs=cstm.getResultSet();---取得第一个结果集
if(rs.next){
System.out.println(rs.getInt(1));----打印出结果集的第一个字段
}
bl=cstm.getMoreResultSet();----继续去取结果集,若还还能取到结果集,则bl=true了。然后回去循环。
}
这样,就可以循环把结果集处理了,注意存储过程中每个SELECT都返回一个结果集,查询中的处理方式就是如上。
这是最科学的处理方式。
转http://www.xue5.com/Developer/Java/677461.html
MySQL数据库中有两个表,一个student,一个teacher
其中student表结构如下
teacher表如下
有存储过程checkAll
BEGINselect * from teacher;SELECT * FROM student;END
Java代码如下
1 public static Map<String,Object>getAll(){ 2 Connection conn=null; 3 CallableStatement cs=null; 4 ResultSet rs=null; 5 Map<String,Object> map=new HashMap<String, Object>(); 6 Map<String,String> temp=null; 7 List<Map<String,String>> list=null; 8 try { 9 conn=DBCon.getInstance();10 cs=conn.prepareCall("{call checkAll()}");11 cs.execute();12 rs=cs.getResultSet();13 if(rs!=null){14 list=new ArrayList<Map<String,String>>();15 while(rs.next()){16 temp=new HashMap<String, String>();17 temp.put("id", rs.getInt("id")+"");18 temp.put("birthday", rs.getDate("birthday")+"");19 temp.put("name", rs.getString("name")+"");20 temp.put("title", rs.getString("title")+"");21 list.add(temp);22 }23 map.put("teacher", list);24 if(cs.getMoreResults()){25 rs=cs.getResultSet();26 list=new ArrayList<Map<String,String>>();27 while(rs.next()){28 temp=new HashMap<String, String>();29 temp.put("id", rs.getInt("id")+"");30 temp.put("name", rs.getString("name"));31 temp.put("age", rs.getInt("age")+"");32 list.add(temp);33 }34 map.put("student", list);35 }36 }37 } catch (Exception e) {38 e.printStackTrace();39 }40 finally{41 DbUtils.closeQuietly(conn, cs, rs);42 }43 return map;44 }
若是数据库是SqlServer,存储过程涉及到表的更新(增、删、改)的话会出错,可以在存储过程里面加上一句:set nocount on即可
- Java获取存储过程返回的多个结果集
- Java获取存储过程返回的多个结果集
- Java获取存储过程返回的多个结果集
- java获取存储过程返回的结果集(多个结果集)
- jdbc调用存储过程,遍历两个结果集(获取存储过程返回的多个结果集),珍藏版
- java获取存储过程返回的结果集
- Java 执行存储过程--返回多个结果集
- Java 执行存储过程--返回多个结果集
- java调用oracle存储过程 返回多个结果集
- Java调用oracle存储过程返回多个结果集
- Java调用存储过程返回多个结果集
- java 调用存储过程返回多个结果集
- JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)
- java 调用SqlServer分页存储过程的,返回多个结果集
- java 调用SqlServer分页存储过程的,返回多个结果集
- 一个存储过程返回多个结果集,怎样获取,怎样操作?解决思路
- EF获取存储过程多返回结果
- java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
- 原生JavaScript---字符串[3]
- 【Linux基础】运算符重载的格式与规则
- 上篇日本人经营之道 一找漏洞钻空子乘隙而入
- Oracle Database :玩转Oracle学习笔记之(27):Oracle函数
- 第十三堂课后作业
- Java获取存储过程返回的多个结果集
- vs2010 安装va
- 凡客前端面试
- Oracle Database :玩转Oracle学习笔记之(28):Oracle表空间和数据文件
- 关于new class不是null
- 怎么样做一个老板欣赏的好员工?
- 第十次实验
- Android4.2 G-Sensor工作流程
- SqlServer和Oracle中一些常用的sql语句2