我有一个验证的登录过程或函数“ValidateUserLogin”需要参数“@UserName”,但未提供
ALTER PROCEDURE ValidateUserLogin
(
@UserName varchar (50),
@Password varchar (50)
)
AS
BEGIN
if EXISTS(SELECT * FROM AdminLogin WHERE [email protected] AND [email protected])
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);
}
,当我尝试了为空我得到的用户名和密码设置的默认值例外 @admin不是程序ValidateUserLogin //管理参数是为用户名
您是否建议SQL存储过程是区分大小写?我认为不是 – Mubarek
@nuux - 这取决于数据库的默认排序规则。大多数人没有CS排序规则。但是第一个版本缺乏引号肯定会引起一个问题,因为它会尝试提交以变量的值为准的名字命名的参数。这应该有''@UserName“'来解决这两个可能的问题。 –
@马丁史密斯 - 对不起,我注意到了这个问题。什么时候可以有人拥有CS排序规则 – Mubarek