我正在尝试将文件的字节添加到数据库中的字段,该字段的类型为VARBINARY,由于文件大小限制,需要附加此字段
是否有任何示例代码/网站如何执行此操作?或者甚至可以使用Entity Framework将字节附加到此字段?
我需要附加数据,因为获取1GB +的字节数组会导致内存异常,所以我认为这是唯一的方法..
我做过的一些代码
using (var stream = File.OpenRead(fn))
{
long bytesToRead = 1;
byte[] buffer = new byte[bytesToRead];
while (stream.Read(buffer, 0, buffer.Length) > 0)
{
Item = buffer;
}
}
感谢您的帮助
答案 0 :(得分:1)
基本思想是创建一个实现如下更新的存储过程:
UPDATE MyTable SET Col = Col + @newdata WHERE Id = @Id
并使用ExecuteSqlCommand(see MSDN docs here)调用它。
但在这种情况下,您只需将问题转移到SQL Server端。必须检索,修改和回写列。
要真正解决内存问题,请使用UPDATETEXT实现存储过程,这对您的要求更有效:
更新现有的text,ntext或image字段。使用UPDATETEXT仅更改text,ntext或image列的一部分。使用WRITETEXT更新和替换整个text,ntext或image字段
答案 1 :(得分:0)
将大文件存储在数据库中时,通常将文件存储在Web服务器上而不是数据库中。在数据库中,您可以存储文件的路径,因此您的代码可以访问它的内容,而无需在数据库中存储数据。
但是,如果你试图在内存中操作1GB +文件的内容,那么这样做会很有趣......