是否可以将二进制数据附加到 SQL Server 中数据类型为图像的列。我听说 varbinary(max) 是可能的,但我想要图像数据类型的解决方案。如果是这样,请向我提供代码示例。
问问题
2376 次
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 回答