【发布时间】:2014-12-08 07:33:30
【问题描述】:
我需要将记录插入到包含 varbinary 和 image 列的 SQL 表中。
如何获得 0x00120A011EFD89F94DDA363BA64F57441DE9(所有记录都一样)
进入这个
BLOB_TYPE (MY_UDDT(varbinary(18))?
这是我目前所拥有的,除了 SqlDbType.Udt 参数定义之外,一切都非常简单。使用此代码,我收到错误消息“指定的类型未在目标服务器上注册。System.Byte []”,我可以说 100% 的“用户定义的数据类型”存在于服务器上。我从 sys.types 中查询了 select *,它返回了类型。
定义:CREATE TYPE [dbo].[MY_UDDT] FROM varbinary NOT NULL
sql = "INSERT INTO dbo.BLOBS (BLOB_TYPE) VALUES (@BLOB_TYPE);"
cmd = New SqlCommand(sql, conn)
Dim parameter As New SqlParameter("@BLOB_TYPE", SqlDbType.Udt)
With parameter
.SqlDbType = SqlDbType.Udt
.UdtTypeName = "dbo.MY_UDDT"
.Value = blobType
End With
cmd.Parameters.Add(parameter)
cmd.ExecuteNonQuery()
Public ReadOnly Property blobType As Byte()
Get
Dim Str As String = "0x00620A011EFD89F94DDA863BA64F57441DE9"
Dim bytes As Byte() = New Byte(Str.Length * 2 - 1) {}
System.Buffer.BlockCopy(Str.ToCharArray(), 0, bytes, 0, bytes.Length)
Return bytes
End Get
End Property
【问题讨论】:
标签: sql-server vb.net sqlclr sqlcommand user-defined-types