从存储过程中读取参数设置

来源:互联网 发布:node.js 生成pdf 编辑:程序博客网 时间:2024/06/10 13:21

先写一个简单的存储过程,实现添加一个用户的功能:

-- 添加新用户
CREATE PROCEDURE dbo.usp_User_Insert
    
@username varchar(16) ,    -- 用户名
    @pwd varchar(16) ,        -- 密码
    @email varchar(50),        -- Email
AS 

-- 添加到用户表
INSERT INTO T_User
(
[username],[pwd],[email],
VALUES
(
@username,@pwd,@email)

GO

如果手动为为存储过程准备参数 ,是像这样写的:

            SqlParameter[] insertParams = new SqlParameter[]
            
{
                
new SqlParameter ("@username",SqlDbType .VarChar ),
                
new SqlParameter ("@pwd",SqlDbType .VarChar ),
                
new SqlParameter ("@email",SqlDbType .VarChar ),
            }
;

如果从存储过程中直接读取insertParams,只要用ConnectString和存储过程名生成一个SQLCommand,再执行 SqlCommandBuilder.DeriveParameters(SQLCommand)命令就可以自动根据存储过程中设置为SQLCommand准备好参数.最后再通过cmd.Parameters.CopyTo(selectParams,0)来获取参数selectParams.

代码如下:

using (SqlConnection cn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(spName,cn))//spName为存储过程名称
{
    cn.Open();
    cmd.CommandType 
= CommandType.StoredProcedure;

    
//设置SqlCommand中存储过程的参数
    SqlCommandBuilder.DeriveParameters(cmd);

    
//存储过程的参数集合
    SqlParameter[] selectParams = new SqlParameter[cmd.Parameters.Count];;

    cmd.Parameters.CopyTo(selectParams , 
0);
}
原创粉丝点击