4

我想做一个原始 SQL 查询,将加密值 ( byte[]) 添加到 SQL 列 ( varbinary),而不使用如下参数:

 byte[] value = GetEncryptedValue();
 string query = "INSERT INTO Table1 VALUES('" + value.ToString() + "')";

我要插入的列数据类型是varbinary. 我需要一些使用 value.ToString() 的函数。这个怎么写?我只需要 sql 中的 master.dbo.fn_varbintohexstr 之类的函数!!!

4

2 回答 2

8

二进制文字采用 形式0x6ABCDEF,即0x后跟十六进制形式的字节。

您可以使用它来将字节数组转换为文字值:

string literal = "0x" + String.Join("", value.Select(n => n.ToString("X2")));

二进制文字周围没有撇号:

string query = "INSERT INTO Table1 VALUES(" + literal + ")";
于 2013-03-03T15:27:13.220 回答
0

另一种方法是使用BitConverter

byte[] value = GetEncryptedValue();
string query = 
    "INSERT INTO Table1 (c1) VALUES(0x" + BitConverter.ToString(value).Replace("-", "") + ")";

BitConverter.ToString返回类似的东西01-02-03....

于 2020-11-24T21:21:00.107 回答