在sql server中保存字节数组

时间:2013-03-20 07:51:58

标签: sql-server bytearray sqlcommand

我希望使用一种方法来保存需要使用字节数组的密码,如post

所示

那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用SqlCommand传递和检索字节数组?

3 个答案:

答案 0 :(得分:23)

如果它总是长度相同,那么binary(length)将是合适的。如果长度不同,请使用varbinary(maxlength)

binary and varbinary

并且,正如@ p.s.w.g所说,您可以通过将其放入合适的参数来从代码中传递它。

答案 1 :(得分:4)

只需使用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

答案 2 :(得分:0)

我建议将{32}字节中的nvarchar(45)和Base64用于字符串。这是保存哈希的标准方法。

或者你可以nvarchar(64)并将其存储为十六进制字符串。