Неправильный синтаксис рядом с "@ PasswordHa sh" - PullRequest
2 голосов
/ 21 июня 2020

Хорошо, я проверил несколько разных похожих проблем, но похоже, что ничего из похожих случаев не решает мою проблему, или мне что-то не хватает.

Соответствующий метод:

private void ApplyPasswordToUser(string username, string passwordHash)
{
        using(SqlConnection connection = new SqlConnection(ConnectionString))
        {
            SqlCommand command = new SqlCommand 
            {
                Connection = connection,
                CommandText = "dbo.AddPasswordHash @Username @PasswordHash"
            };

            command.Parameters.Add("@Username",SqlDbType.NVarChar,24).Value = username;
            command.Parameters.AddWithValue("@PasswordHash",passwordHash);

            connection.Open();
            command.ExecuteNonQuery(); // Error here
        }
}

dbo.AddPasswordHa sh:

    @Username nchar(24),
    @PasswordHash nchar(80)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.UserPass
    SET Password_Hash = @PasswordHash
    WHERE Username = @Username
END

Я использую алгоритм Blowfi sh из пакета NuGet CryptSharp.

У меня есть еще 3 команды, которые не передайте этот пароль ha sh в качестве ввода, и все будет работать отлично. Кажется, что этот сработал, что бы я ни изменил.

ha sh содержит различные специальные символы в своей строке, поэтому я не уверен, влияет ли это на то, проходит ли команда или нет .

1 Ответ

6 голосов
/ 21 июня 2020

Я бы предложил использовать такой код:

    using(SqlConnection connection = new SqlConnection(ConnectionString))
    {
        SqlCommand command = new SqlCommand("dbo.AddPasswordHash", connection);
        command.CommandType = CommandType.StoredProcedure;

        command.Parameters.Add("@Username", SqlDbType.NChar, 24).Value = username;
        command.Parameters.Add("@PasswordHash", SqlDbType.NChar, 80).Value = passwordHash);

        connection.Open();
        command.ExecuteNonQuery();
    }
  • Используйте правильный синтаксис для вызова хранимой процедуры
  • Используйте правильный синтаксис для определения параметров (с определением их правильных типы)
...