1). .Net中的参数定义为形式参数 而把存储过程的参数定义为实际参数;
2). 数据库存储过程的实际参数如果没有默认值则形式参数必须传值给实际参数;
3). 但是如果形式参数的类型为ParameterDirection.Output 则传给实际参数的永远是空值;ParamenterDirection.Inupt为默认值,只可输入
4). 如果形式参数的类型为ParameterDirection.ReturnValue 则形式参数不会传值给实际参数 实际参数必须有默认值 否则代码会报错;
5). 如果形式参数类型为ParameterDirection.InputOutput 或者 ParameterDirection.Output 则实际参数必须有output 关键字.
--------------------------------------------------------------------------------------------------------------------------
例:ParameterDirection.ReturnValue 的用法
SqlCommand mycom = usercommon.createcommand();
mycom.CommandText = "ModifyUserPwd";
SqlParameter[] parm = {
new SqlParameter("@username", SqlDbType.VarChar, 50),
new SqlParameter("@userpwd", SqlDbType.VarChar, 50),
new SqlParameter("@newpwd", SqlDbType.VarChar, 50),
new SqlParameter("@returnvalue",SqlDbType.Int)
};
parm[0].Value=username;
parm[1].Value=oldpwd;
parm[2].Value=newpwd;
parm[3].Direction = ParameterDirection.ReturnValue;'返回数据库中return的值(即本代码中的1或0)
usercommon.AttachParameters(mycom,parm);
mycom.ExecuteNonQuery();
int i =(Int32) mycom.Parameters["@returnvalue"].Value;
usercommon.CloseConn();
return i;
存储过程
alter proc ModifyUserPwd
(
@username varchar(50),
@userpwd varchar(50),
@newpwd varchar(50)
)
as
declare @pwd varchar(50)
select @pwd=userpwd from users
if(@pwd=@userpwd)
begin
update users set userpwd=@newpwd where username=@username
return 1
end
else
return 0
go