INSERT BYTE [] TO Sql没有参数

时间:2013-03-03 15:22:53

标签: c# sql

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

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

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

2 个答案:

答案 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....