Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节数组插入SQL Server数据库表_C#_Asp.net_Sql Server - Fatal编程技术网

C# 将字节数组插入SQL Server数据库表

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 我想将这些数据保存到数据库中,但我不确定要使用哪种数据类型。据我所见,字节数组没有数据类型,我非常确

我对密码使用PBKDF2哈希算法,该算法根据用户提供的密码生成一个字节数组,如下所示:

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:这太奇怪了。请使用用于初始化参数的代码询问另一个问题。