我想INSERT INTO记录varbinary(max)中的表一个Byte数组我该怎么做?
答案 0 :(得分:3)
使用存储过程,只需创建varbinary(max)类型的参数,并将其插入表中,就像任何数据类型一样。
在c#(或vb或其他)代码中,向sql命令对象添加一个参数,并将字节数组设置为参数值:
command.Parameters.AddWithValue("@parameter_name", myByteArray);
如果没有使用存储过程,你可以用参数化的sql语句做同样的事情,但我从来没有尝试过,所以我不能给出一个例子。
编辑:
您正在使用参数化查询,这不是我的事情,所以我不能保证这会起作用。但是,这里有一些代码可以帮助你。
RemoteSQLcmd = New SqlCommand("INSERT INTO Table(1) Values (newid(), ProductID, @bin_value", RemoteSQLConn)
RemoteSQLcmd.Parameters.AddWithValue(@bin_value", imSource) ;
二进制值必须表示为参数(@bin_value),并且该值由AddWithValue语句设置。参数名称不必与列名匹配。
一些注意事项:我建议在插入语句中使用列名而不是依赖列位置。另外,我不知道'table(1)'的含义 - 实际上是名称表
答案 1 :(得分:1)
假设:
CREATE TABLE [dbo].[varb_table] (
[ID] [int] IDENTITY(1,1) NOT NULL,
[BinaryData] [varbinary](max) NULL,
CONSTRAINT [PK_varb_table] PRIMARY KEY CLUSTERED
)
使用:
INSERT INTO varb_table
(ID, BinaryData)
VALUES
(NULL, 0x);
DECLARE @pk
SET @pk = @@IDENTITY;
UPDATE varb_table
SET BinaryData.Write (@your_byte_array, 0, DATALENGTH(BinaryData))
WHERE ID = @pk