Java中调用sqlServer的存储过程(CallableStatement)的几种简单情况

一、调用不带参数的存储过程

--创建存储过程
create procedure testselect as
begin
	select bno from book;
end
package com.nc.dao;

import java.sql.*;
public class testCall {
    public static  void main(String[] args){

        Connection connection = JDBCUtil.getConn();
        String sql = "{call testselect}";
        try {
            // 建立数据库的连接
            CallableStatement cstmt = connection.prepareCall(sql);
            // 查询
            ResultSet rs = cstmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

对比数据库查询结果

二、调用带参数的存储过程

// 带参数
create procedure testselect @bno char(12)
as
begin
	select bno from book where bno = @bno
end
package com.nc.dao;

import java.sql.*;
public class testCall {
    public static  void main(String[] args){

        Connection connection = JDBCUtil.getConn();
        String sql = "{call testselect(?)}";
        try {
            // 建立数据库的连接
            CallableStatement cstmt = connection.prepareCall(sql);
            cstmt.setString(1, "0000001");
            // 查询
            ResultSet rs = cstmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

对比数据库查询结果

三、带输出参数的存储过程

go
create procedure testselect @bno char(12), @result char(12) output
as
begin
	select @result = bno from book where bno = @bno
end
go
package com.nc.dao;

import java.sql.*;
public class testCall {
    public static  void main(String[] args){

        Connection connection = JDBCUtil.getConn();
        String sql = "{call testselect(?, ?)}";
        try {
            // 建立数据库的连接
            CallableStatement cstmt = connection.prepareCall(sql);
            // 按照索引设置参数
//            cstmt.setString(1, "0000001");
            // 将名为 parameterName 的参数注册为 JDBC 类型 sqlType。
//            cstmt.registerOutParameter(2, Types.CHAR);
            // 按参数名折设置参数
           cstmt.setString("bno", "0000001");
           // 将名为 parameterName 的参数注册为 JDBC 类型 sqlType。
           cstmt.registerOutParameter("result", Types.CHAR);
            cstmt.execute();
            // 参数索引必须与call的参数位置一致
            System.out.println(cstmt.getString(2));
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

对比数据库查询结果

 

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值