gpt4 book ai didi

c# - "@PasswordHash"附近的语法不正确

转载 作者:行者123 更新时间:2023-12-01 23:57:25 25 4
gpt4 key购买 nike

好的,我已经检查了许多不同的类似问题,但似乎没有任何类似情况可以解决我的问题,或者我遗漏了什么。

相关方法:

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.AddPasswordHash:

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

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

我正在使用 CryptSharp NuGet 包中的 Blowfish 算法。

我有 3 个其他命令没有将密码散列作为输入传递,但都运行良好。这个好像不管我怎么改好像都发了。

哈希在其字符串中包含各种特殊字符,所以我不确定这是否会影响命令是否通过。

最佳答案

我建议使用这样的代码:

    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();
}
  • 使用正确的语法调用存储过程
  • 使用正确的语法定义参数(定义它们的正确类型)

关于c# - "@PasswordHash"附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62500977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com