先写一个简单的存储过程,实现添加一个用户的功能:
--
添加新用户
CREATE
PROCEDURE
dbo.usp_User_Insert
@username
varchar
(
16
) ,
--
用户名
@pwd
varchar
(
16
) ,
--
密码
@email
varchar
(
50
),
--
Email
AS
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
--
添加到用户表
INSERT
INTO
T_User
(
[
username
]
,
[
pwd
]
,
[
email
]
,
VALUES
(
@username
,
@pwd
,
@email
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
GO
如果手动为为存储过程准备参数 ,是像这样写的:
SqlParameter[] insertParams
=
new
SqlParameter[]
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
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为存储过程名称
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
cn.Open();
cmd.CommandType = CommandType.StoredProcedure;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//设置SqlCommand中存储过程的参数
SqlCommandBuilder.DeriveParameters(cmd);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//存储过程的参数集合
SqlParameter[] selectParams = new SqlParameter[cmd.Parameters.Count];;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
cmd.Parameters.CopyTo(selectParams , 0);
}