现在的位置: 首页 > 综合 > 正文

JDBC调用sqlserver的存储过程

2013年12月13日 ⁄ 综合 ⁄ 共 1669字 ⁄ 字号 评论关闭
首先建立两个存储过程:
存储过程p_1----从cell表中取出数据
create proc p_1 
as 
select * from cell
go
存储过程p_2----往cell表里插入数据
create proc p_2 
    @name varchar(40),
    @remark varchar(40)
as
insert into cell(name,remark) values(@name,@remark)
go
调用存储过程p_1:
import java.sql.*;

/**
 * jdbc中调用存储过程
 * @author jiafang83
 *
 */
public class Procedure2 {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=fish";
        String user = "bm";
        String pwd = "bm";
        Connection conn = null;
        CallableStatement proc = null;//执行sql存储过程的接口
        ResultSet rs = null;

//        调用存储过程p_1:从Cell表中取出数据
        try{
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            conn = DriverManager.getConnection(url,user,pwd);
            proc = conn.prepareCall("{? = call p_1 ()}");
            proc.registerOutParameter(1, Types.REAL);
            rs = proc.executeQuery();//取得结果集
            while(rs.next()){
                System.out.println(rs.getString("name"));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(rs!=null) rs.close();
            if(proc!=null)proc.close();
            if(conn!=null)conn.close();
        }
    }

}

调用存储过程p_2:
import java.sql.*;

/**
 * jdbc中调用存储过程
 * @author jiafang83
 *
 */
public class Procedure {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=fish";
        String user = "bm";
        String pwd = "bm";
        Connection conn = null;
        CallableStatement proc = null;//执行sql存储过程的接口
        
//        调用存储过程p_2:向Cell表中插入数据
        try{
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            conn = DriverManager.getConnection(url,user,pwd);
            proc = conn.prepareCall("{call p_2 (?,?)}");
            proc.setString(1, "测试");
            proc.setString(2, "测试");
            proc.execute();
            System.out.println("成功调用存储过程,插入数据!");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(proc!=null)proc.close();
            if(conn!=null)conn.close();
        }
    }


抱歉!评论已关闭.