4

次のようなパラメータを使用せずに、暗号化された値( byte[])をSQL列( )に追加する生の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、16進数形式のバイトが続きます。

これを使用して、バイト配列をリテラル値に変換できます。

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 に答える