在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);
}
}
}
【转载地址】http://hi.baidu.com/jingminglang/item/2460e471d198c348ef1e5391