C# 将字节数组插入SQL Server数据库表
我对密码使用PBKDF2哈希算法,该算法根据用户提供的密码生成一个字节数组,如下所示:C# 将字节数组插入SQL Server数据库表,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我对密码使用PBKDF2哈希算法,该算法根据用户提供的密码生成一个字节数组,如下所示: var DeriveBytes = new Rfc2898DeriveBytes(_Password, 20); byte[] _Salt = DeriveBytes.Salt; byte[] _Key = DeriveBytes.GetBytes(20); // derive a 20-byte key 我想将这些数据保存到数据库中,但我不确定要使用哪种数据类型。据我所见,字节数组没有数据类型,我非常确
var DeriveBytes = new Rfc2898DeriveBytes(_Password, 20);
byte[] _Salt = DeriveBytes.Salt;
byte[] _Key = DeriveBytes.GetBytes(20); // derive a 20-byte key
我想将这些数据保存到数据库中,但我不确定要使用哪种数据类型。据我所见,字节数组没有数据类型,我非常确定我不能将其转换为字符串并用
varchar
存储,或者我可以吗?binary
和varbinary
非常明确地设计用于存储字节数组
将SQL表中的列定义为
binary
或varbinary
,然后使用其中一个重载将其添加到ado命令对象的参数属性中,该重载需要SqlDbType
参数来传递这是一个二进制值
备选案文2:
将SQL表中的列定义为
nvarchar(max)
,将字节数组转换为基64字符串,即System.convert.ToBase64String(mybytes)
。当需要从数据库中检索时
mybytes = System.Convert.FromBase64String((byte[])dr[i]);
谢谢,尽管我在语句中调用
ExecuteNonQuery()
时引发了一个异常,该语句表示未能将参数值从字节[]转换为字符串。
。我已经确定我要添加的参数是SqlDbType.VarBinary
类型的。@James:这太奇怪了。请使用用于初始化参数的代码询问另一个问题。