Insert Bytes数组INTO varbinary(max)记录

时间:2010-02-06 20:40:17

标签: sql visual-studio sql-server-2008

我想INSERT INTO记录varbinary(max)中的表一个Byte数组我该怎么做?

2 个答案:

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