问题
Am looking to use an approach in saving passwords that requires using byte array as in this post
So which data type should i use in sql server to save byte array? and how can i pass and retrieve the byte array using SqlCommand?
回答1:
If it's always going to be the same length, then binary(length)
would be suitable. If it's going to vary in length, use varbinary(maxlength)
.
binary and varbinary.
And, as @p.s.w.g says, you pass it from code by placing it into a suitable parameter.
回答2:
Just use a byte[]
the same way you would any other parameter, specifying SqlDbType.Binary
as the parameter type. Here a sample in 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;
Or if you prefer 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
回答3:
I'd recommend using nvarchar(45)
and Base64 your 32 bytes into a string. This is the standard way of saving a hash.
Alternatively you could do nvarchar(64)
and store it as a hex string.
来源:https://stackoverflow.com/questions/15518051/save-byte-array-in-sql-server