1

是否可以将二进制数据附加到 SQL Server 中数据类型为图像的列。我听说 varbinary(max) 是可能的,但我想要图像数据类型的解决方案。如果是这样,请向我提供代码示例。

4

2 回答 2

2

首先,正如其他人所说,您应该使用 VARBINARY 类型而不是 IMAGE。

无论如何,如果你仍然想使用 IMAGE,你可以像这样使用UPDATETEXT命令:

DECLARE @Pointer VARBINARY(1);
SELECT @Pointer = TEXTPTR(Data) FROM TableName WHERE Id = @Id;

UPDATETEXT TableName.Data @Pointer @Offset @Delete WITH LOG @Bytes;

考虑:

@Bytes = 您要附加的实际字节数

@Delete = 如果你想删除它可能在它的字节位置有的东西

于 2018-05-15T18:46:01.147 回答
0
//Create Binary Data Stream  
    string filePath = Server.MapPath("APP_DATA/TestDoc.docx");
    string filename = Path.GetFileName(filePath);
    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    Byte[] bytes = br.ReadBytes((Int32)fs.Length);
    br.Close();
    fs.Close();

--------------------
//insert the file into database

string strQuery = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)";
SqlCommand cmd = new SqlCommand(strQuery,conn);
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = "application/vnd.ms-word";
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
cmd.ExecuteNonQuery();

注意:ntext、text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。

于 2012-06-04T07:06:13.703 回答