我知道这个问题已经被问过很多次了,我已经解决了大部分问题,但没有一个能解决我的问题
我有一个名为 LoginValidation
的存储过程,它接受 2 个参数,用户名和密码,并返回相应用户的 user_id
。
程序代码如下:
@username nvarchar(50),
@password nvarchar(50),
@userID int output
AS
SELECT @userID = user_id
FROM Users_Master
WHERE user_name = @username and password = @password;
RETURN
但是,当我尝试在 C# 中使用此过程时,出现以下错误:
Procedure or function 'LoginValidation' expects parameter '@userID', which was not supplied
这是我的 C# 代码:
protected void btnLogin_Click(object sender, EventArgs e)
{
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "LoginValidation";
cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = txtmobile.Text;
cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = txtpwd.Text;
SqlParameter returnParm = cmd.Parameters.AddWithValue("@userID", SqlDbType.VarChar);
returnParm.Direction = ParameterDirection.ReturnValue;
string id = returnParm.Value.ToString();
try
{
dr = cmd.ExecuteReader();
}
catch (SqlException EX)
{
string ff = EX.Message;
}
if (dr.HasRows)
{
while (dr.Read())
{
Session["name"] = dr["user_name"].ToString();
lblmsg.Text = "Login successful: " + id;
}
}
else
{
lblmsg.Text = "Invalid username/password";
}
dr.Close();
con.Close();
}
有什么建议吗?
最佳答案
尝试使用 returnParm.Direction = ParameterDirection.Output;
关于c# - 无法从存储过程中获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831579/