正在寻找使用节约,需要在此post保存字节数组中的SQL Server
所以我应该在SQL Server中使用的数据类型来保存字节数组使用字节数组作为密码的方法?以及如何使用SqlCommand传递和检索字节数组?
正在寻找使用节约,需要在此post保存字节数组中的SQL Server
所以我应该在SQL Server中使用的数据类型来保存字节数组使用字节数组作为密码的方法?以及如何使用SqlCommand传递和检索字节数组?
如果它总是将是相同的长度,然后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
使用二进制sql数据类型可以吗?正如我GOOGLE了一些人告诉它用于像图像这样的大二进制文件,你是否同意这一点? – user2155873 2013-03-20 08:02:28
@ user2155873使用'VARBINARY(MAX)'来处理较大或长度不一的文件。对于密码哈希,使用'BINARY(32)'(或无论你的哈希长是多少)。 – 2013-03-20 08:04:32
@ user2155873 - 假设你可以声明一个'binary(5)',为5个字节分配存储空间,你会说这只适合存储一个大文件吗? – 2013-03-20 08:04:48
不知道这是多大年纪,但我建议nvarchar(45)和Base64 32字节的字符串。这是保存散列的标准方式。 或者,您可以执行nvarchar(64)并将其存储为十六进制字符串。
+1是的。究竟。 – 2013-03-20 08:06:11
对我来说,我需要'varbinary(max)' – 2016-06-02 17:29:14