我有一个存储过程
ALTER PROC TESTLOGIN
@UserName varchar(50),
@password varchar(50)
As
Begin
declare @return int;
set @return = (SELECT COUNT(*)
FROM CPUser
WHERE UserName = @UserName
AND Password = @password);
return @return;
End
和在C#中
SqlConnection con = db.con;
SqlCommand cmd = new SqlCommand("TESTLOGIN", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parm = new SqlParameter("@return", SqlDbType.Int);
parm.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(parm);
cmd.Parameters.Add(new SqlParameter("@UserName", txtUserName.Text.ToString().Trim()));
cmd.Parameters.Add(new SqlParameter("@password", txtPassword.Text.ToString().Trim()));
cmd.ExecuteNonQuery();
con.Close();
int id = Convert.ToInt32(parm.Value);
但它总是返回0。请帮助我解决此问题
过程从不返回值。您必须在存储过程中使用输出参数。
然后,您必须从c#添加一个sqlparameter,其参数方向是out。 希望这有意义。
以这种方式进行(在代码中进行必要的更改)。
您可以尝试执行此操作。将参数添加为输出方向,并在执行查询后获取输出参数值。
If you want to to know how to return a value from stored procedure to Visual Basic.NET. Please read this tutorial: How to return a value from stored procedure
我使用以下存储过程返回该值。
You need a parameter with Direction set to
ParameterDirection.ReturnValue
in code but no need to add an extra parameter in SP. Try this2件事。
用英语完成工作,然后检索值。
这将不起作用:
这将起作用:
如果您不确定 检查参数值 读者在处理结果之前和之中。