我在SQL Server中有一个包含多个列的表。其中一列是varbinary(4000)
。
基本上我需要在表中取几行并使用列中的值。这包括varbinary(4000)
值。但是,我将varbinary(4000)
值传递给VB参数时遇到问题。
我需要能够将它传递给参数(参数类型并不重要,只要我可以将其与其他varbinary(4000)
值进行比较(也可以从数据库中的同一列中获取) )然后将更新发送回SQL Server一个不同的表。
varbinary(4000)
值被用作我们的主键,因此当SQL Server再次收到它时,值显然必须相同。
我尝试了一些不同的东西。我相信varbinary(4000)
值是十六进制数。
TryCast(ds.Tables(0)("columnName"), System.Data.Linq.Binary).ToArray()
Encoding.UTF8.GetString(ds.Tables(0)("columnName"))
Encoding.Unicode.GetString(ds.Tables(0)("columnName"));
Encoding.ASCII.GetString(ds.Tables(0)("columnName"));
修改
可能的重复不是解决方案,因为他只需要从SQL中读取值。我需要将它与表中的其他varbinary(4000)
进行比较,以便将varbinary(4000)
用作sql insert命令中的值。因此,我需要varbinary(4000)
值与我收到它时相同(如果它需要在那之间进行转换)。
答案 0 :(得分:0)
我遇到过几件事。 Hashtable将保留varbinary
值。然后可以根据需要使用它。
Dim table As New Hashtable
Dim ds As DataSet
Dim count As Integer = 0
'ds now holds the table with the varbinary column'
ds = getSqlTable()
For Each row In ds.Tables(0).Rows
table(count) = row("varBinaryColumn")
count += 1
Next
将其上传回SQL可以通过。
完成 For Each item In table
Dim sqlCmd As New SqlCommand
sqlCmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, 8000).Value = item.Value
Next