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

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

2011-02-14 10:20 369 查看
在JAVA中执行存储过程用

CallableStatement callsm= con.prepareCall(strsql);

callsm.execute();

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

如果有多个结果集呢?

view plaincopy to clipboardprint?
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);  
        }  
    }  
}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息