过程或功能';ValidateUserLogin';期望参数'@用户名';,没有提供
本文关键字:用户 参数 功能 ValidateUserLogin 期望 过程 #39@ | 更新日期: 2023-09-27 18:20:58
我有这个用于验证登录的存储过程
ALTER PROCEDURE ValidateUserLogin
(
@UserName varchar (50),
@Password varchar (50)
)
AS
BEGIN
if EXISTS(SELECT * FROM AdminLogin WHERE UserName=@UserName AND Password=@Password)
select 0/*returns 0 on success*/
ELSE
select 1/*non zero otherwise*/
END
我使用下面的代码调用它,但我得到了以下异常"过程或函数'ValidateUserLogin'需要参数'@UserName',但没有提供。"
bool boolReturnValue = true;
SqlCommand command = new SqlCommand();
command.Connection = sqlConnection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "ValidateUserLogin";
command.Parameters.Add(@username,SqlDbType.VarChar,50).Value=username;
command.Parameters.Add(@password, SqlDbType.VarChar,50).Value=password;
sqlConnection.Open();
try
{
command.ExecuteScalar();
boolReturnValue=Convert.ToBoolean( command.ExecuteScalar());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
当我尝试将用户名和密码的默认值设置为null时,我会得到异常@admin不是ValidateUserLogin过程的参数//admin是为用户名提供的值
更改以下两行:
command.Parameters.Add(@username,SqlDbType.VarChar,50).Value=username;
command.Parameters.Add(@password, SqlDbType.VarChar,50).Value=password;
带有:
command.Parameters.Add("@Username",SqlDbType.VarChar,50).Value=username;
command.Parameters.Add("@Password", SqlDbType.VarChar,50).Value=password;
对于Add方法,您需要将参数名称放在引号中。换句话说,"@username"加上引号。
如果数据库区分大小写,则参数具有区分大小写的
command.Parameters.Add(@username,SqlDbType.VarChar,50).Value=username;
应具有@UserName参数以匹配过程的大小写。
当然,密码也是如此。