我必须执行查询以在SQL表中插入值。值的类型是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;
但是我有这个错误:无法将参数值从String转换为 字节[]。
所以我尝试将我的字符串转换为byte [],但是我在这个网站上找到的所有函数都将我的字符串转换为字节来改变它的值,所以它不好,因为我的字符串在值I里面需要在表中插入。
回顾:我有一个带有此值的字符串:" 0x54000000006C00000000099W043100300030003100"如何在带有varbinary字段的SQL表中添加它?
答案 0 :(得分:2)
好的,我想我现在明白了。如果您使用的是sql server 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;
请注意1
中的CONVERT(varbinary,@myrecord,1)
。顺便说一句,你给我们的示例号码不是有效的十六进制数字......
更多信息:Msdn
答案 1 :(得分:0)
你可以而且应该能够做到这一点,确保你调整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
}