以字节[]c#为单位的字符串值
本文关键字:字符串 为单位 字节 | 更新日期: 2023-09-27 18:30:03
我必须执行查询才能在SQL表中插入值。值的类型是varbinary,我有一个带十六进制值的字符串要插入
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,改变它的值,所以这不好,因为我的字符串在我需要插入到表中的值里面。
重述:我有一个值为"0x54000000006C00000000099W043100300030003100"的字符串,如何将其添加到带有varbinary字段的SQL表中?
好吧,我想我现在明白了。如果您使用的是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;
注意CONVERT(varbinary,@myrecord,1)
中的1
。顺便说一句,你给我们的示例数字不是有效的十六进制数字。。。
更多信息:Msdn
您可以也应该能够做到这一点,确保调整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
}