我想创建一个原始SQL查询,将加密值(byte[]
)添加到SQL列(varbinary
),而不使用如下参数:
byte[] value = GetEncryptedValue();
string query = "INSERT INTO Table1 VALUES('" + value.ToString() + "')";
我要插入的列数据类型是varbinary
。我需要一些使用value.ToString()的函数。怎么写这个?
我只需要像sql !!!中的master.dbo.fn_varbintohexstr这样的函数。
答案 0 :(得分:3)
二进制文字采用0x6ABCDEF
形式,即0x
后跟十六进制形式的字节。
您可以使用它将字节数组转换为文字值:
string literal = "0x" + String.Join("", value.Select(n => n.ToString("X2")));
二进制文字周围没有撇号:
string query = "INSERT INTO Table1 VALUES(" + literal + ")";
答案 1 :(得分:0)
另一种方法是使用BitConverter
byte[] value = GetEncryptedValue();
string query =
"INSERT INTO Table1 (c1) VALUES(0x" + BitConverter.ToString(value).Replace("-", "") + ")";
BitConverter.ToString
返回类似01-02-03....