"Cannot insert the value NULL into column..." 向列中插入散列值时出现 SqlException

"Cannot insert the value NULL into column..." SqlException while inserting a hashed value into the column

我正在尝试将 Murmur3 散列值插入 nvarchar 列。

这是我的代码:

public int createUserAccount(string email, string password)
{
    try
    {
        using (SqlCommand com = new SqlCommand("[dbo].[CreateUserAccount]"))
        {
            com.CommandType = CommandType.StoredProcedure;
            com.Parameters.AddWithValue("@email", email.Trim().ToLower());

            int HashedPass = HashAlgorithms.Murmur3.Murmur3_1.Hash(
                new System.IO.MemoryStream(Utility.GetBytes(password)));

            com.Parameters.AddWithValue("@password", HashedPass.ToString());
            com.Parameters.AddWithValue("@appId", appId);

            return selectInt(com);
        }
    }
    catch (Exception)
    {
        return -1;
    }
}

int selectInt(SqlCommand com)
{
    try
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            com.Connection = con;

            con.Open();
            object o = com.ExecuteScalar();
            con.Close();

            if (o != null)
            {
                return int.Parse(o.ToString());
            }
            else
            {
                return 0;
            }
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

当我检查通过 com 对象传递给 selectInt() 方法的 password 参数的值时,它显示正确的散列值,如 -32xxxx。

但我仍然收到此错误:

Cannot insert the value NULL into column 'Password', table 'Accounts'; column does not allow nulls. INSERT fails. Line 17

请告诉我为什么会这样?

这是一个 SQL 错误,因此请检查您的存储过程,因为您正试图在 'Password' 列中插入空值。 还要检查您的过程是否有任何触发器,或者它是否正在调用其他过程,以及插入是通过触发器还是被调用的过程进行的。