Сохранение массива байтов в sql server
Я хочу использовать подход к сохранению паролей, который требует использования массива байтов, как в этом в должности
Итак, какой тип данных я должен использовать в sql server для сохранения массива байтов? и как я могу передать и получить массив байтов с помощью SqlCommand?
3 ответов
если он всегда будет одинаковой длины, то binary(length)
было бы подходящим. Если он будет отличаться по длине, используйте varbinary(maxlength)
.
и, как @p.s.w.g говорит, что вы передаете его из кода, помещая его в подходящий параметр.
просто использовать byte[]
так же, как и любой другой параметр, задание SqlDbType.Binary
в качестве типа параметра. Вот пример в C#
// Generate your password hash some way
byte[] passwordHash = new byte[] { 0x0, 0x1, 0x2 ... };
...
command.Parameters.Add("@passwordHash", SqlDbType.Binary);
command.Parameters["@passwordHash"].Value = passwordHash;
или если вы предпочитаете VB.NET
' Generate your password hash some way
Dim passwordHash As Byte() = New Byte() { &H0, &H1, &H2 ... }
...
command.Parameters.Add("@passwordHash", SqlDbType.Binary)
command.Parameters("@passwordHash").Value = passwordHash
Не знаю, сколько лет это, но я бы рекомендовал nvarchar (45) и Base64 ваши 32 байта в строку. Это стандартный способ сохранения хэша. В качестве альтернативы вы можете сделать nvarchar (64) и сохранить его как шестнадцатеричную строку.