SQL Server VarBinary到VB变量

时间:2015-07-31 15:46:41

标签: sql sql-server vb.net converter varbinary

我在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)值与我收到它时相同(如果它需要在那之间进行转换)。

1 个答案:

答案 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