您的位置:首页 > 编程语言 > Java开发

Java 执行存储过程--返回多个结果集

2009-10-13 16:01 471 查看
在JAVA中执行存储过程用

CallableStatement callsm= con.prepareCall(strsql);

callsm.execute();

在执行存储过程后,要得到结果集callsm.getResultSet

如果有多个结果集呢?

package com.yangtianb.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.yangtianb.connctionMannege.ConnectionManager;

public class ProcDao {
public void proctest(){
Connection con = ConnectionManager.getConnection();

CallableStatement callsm=null;
try {
String strsql = "{call PROC_DARWEXPERT(?,?,?)}";//sql语句
callsm = con.prepareCall(strsql);
//参数设置
callsm.setString(1, "res");
callsm.setString(2, "me");
callsm.setString(3, "111");
//执行
callsm.execute();
//获取结果集
ResultSet rs = callsm.getResultSet();
while(rs.next()){
System.out.println(rs.getString(1)+"a");
}
//判断是否有下一个游标
if(callsm.getMoreResults()){//这个判断会自动指向下一个游标
ResultSet rs1 = callsm.getResultSet();//得到第二个结果集
while(rs1.next()){//处理第二个结果集
System.out.println(rs1.getShort(1));
}
try{//关闭rs1
if(rs1 != null){
rs1.close();
}
if(rs!=null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

try {
callsm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionManager.closeConnection(con);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: