byte[] c# 中的字符串值

String value in byte[] c#

我必须执行查询以在 SQL table 中插入一个值。值的类型是 varbinary,我要插入一个字符串,其中包含一个十六进制值。所以我尝试像这样使用 SQL 转换函数:

using (SqlCommand dbCommand = new SqlCommand("INSERT INTO [Link] ([Record]) values (CONVERT(varbinary,@myrecord);", dbConn))

dbCommand.Parameters.Add("myrecord", System.Data.SqlDbType.VarBinary).Value = recordString;

但我有这个错误:无法将参数值从字符串转换为 字节[].

所以我尝试将我的字符串转换为 byte[],但是我在此站点上找到的所有函数都将我的字符串转换为 byte 并更改其值,所以这不好,因为我的字符串包含我需要的值插入 table.

回顾:我有一个具有此值的字符串:“0x54000000006C00000000099W043100300030003100”如何将它添加到带有 varbinary 字段的 SQL table 中?

您可以而且应该能够做到这一点确保您调整 VarBinary 大小以适应您的情况

using(SqlCommand dbCommand = new SqlCommand("INSERT INTO [Link] ([Record]) values(@myrecord);", dbCon))
{
    // Replace 8000, below, with the correct size of the field
    dbCommand.Parameters.Add("@myrecord", System.Data.SqlDbType.VarChar, recordString.Length).Value = recordString;
    dbCommand.ExecuteNonQuery();//wrap around a try catch if you need to catch exceptions
}

好的,我想我现在明白了。如果您使用的是 sql 服务器 2008+,您可以这样做:

using (SqlCommand dbCommand = new SqlCommand("INSERT INTO [Link] ([Record]) values (CONVERT(varbinary,@myrecord,1);", dbConn))

dbCommand.Parameters.Add("myrecord", System.Data.SqlDbType.VarChar).Value = recordString;

注意 CONVERT(varbinary,@myrecord,1) 中的 1。顺便说一句,您给我们的示例数字不是有效的十六进制数字...

更多信息:Msdn