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

先在sqlServer写一个查询全部数据的存储过程。

if exists(select * from sysobjects where name='usp_selectAllInfo')
drop proc usp_selectAllInfo
go
--创建存储过程
create procedure usp_selectAllInfo
as
select id, name, age, birthday, email, phone from Goddess
go

再在Java中写一个泛型的方法调用

    // 存储过程查询全部信息
    public List<Girl> queryAll() {
        List<Girl> list = new ArrayList<Girl>();
        Connection conn = DbConn.getConnection();
        try {// id, name, age, birthday, email, phone
            CallableStatement cs = conn
                    .prepareCall("execute usp_selectAllInfo");
            ResultSet rs = cs.executeQuery();
            while (rs.next()) {
                Girl girl = new Girl();
                girl.setId(rs.getInt(1));
                girl.setName(rs.getString(2));
                girl.setAge(rs.getInt(3));
                girl.setBirthday(rs.getDate(4));
                girl.setPhone(rs.getString(5));
                list.add(girl);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

调用带参数的存储过程。

if exists(select * from sysobjects where name='usp_searchByName')
drop proc usp_searchByName
go
--创建存储过程输入参数。
create proc usp_searchByName
@name nvarchar(50)
as
select  id, name, age, birthday, email, phone
from  Goddess
where name like '%'+@name+'%'
go

在Java中对应的方法代码

// 存储过程根据参数查询
    public List<Girl> queryByName(String name) {
        List<Girl> list = new ArrayList<Girl>();
        Connection conn = DbConn.getConnection();
        try {// id, name, age, birthday, email, phone
//          CallableStatement cs = conn.prepareCall("execute usp_searchByName "
//                  + name);
            CallableStatement cs = conn.prepareCall("execute usp_searchByName ?");
            cs.setString(1, name);
            ResultSet rs = cs.executeQuery();
            while (rs.next()) {
                Girl girl = new Girl();
                girl.setId(rs.getInt(1));
                girl.setName(rs.getString(2));
                girl.setAge(rs.getInt(3));
                girl.setBirthday(rs.getDate(4));
                girl.setPhone(rs.getString(5));
                list.add(girl);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

还有就是带输出参数的

--创建存储过程输出参数。
if exists(select * from sysobjects where name='usp_query_num')
drop proc usp_query_num
go
create proc usp_query_num
@num int  output
as
select @num=count(1) from Goddess
go

在Java中对应方法代码:

// 存储过程输出参数
    public int queryNum() {
        Connection conn = DbConn.getConnection();
        int num = -1;
        try {

            CallableStatement cs = conn.prepareCall("execute usp_query_num ?");
            cs.registerOutParameter(1, Types.INTEGER);
            // cs.execute();
            // num=cs.getInt(1);
            cs.executeUpdate();
            num = cs.getInt(1);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num;

    }

就写这么多吧。每天努力一点点。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值