在C#中从SQL Server流式传输VARBINARY数据

我正在尝试使用ASP.Net提供存储在数据库中VARBINARY(MAX)字段中的图像数据。现在,代码填充数据表,然后将字节数组拉出DataRow并将字节数组推送到响应中。我想知道是否有办法将数据从SQL Server或多或少地流入响应,而不必围绕这些巨大的字节数组进行编组(因为图像很大,它们会导致OutOfMemoryExceptions)。是否有类/机制? 当前代码看起来或多或少像:
DataTable table = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(commandText, connectionString);
adapter.Fill(table);
DataRow row = table.Rows[0];
byte[] imageData = row[0] as byte[];
if(imageData != null)
{
  Response.Clear();
  Response.BinaryWrite(imageData);
  Response.End();
}
在此先感谢 - 任何帮助表示赞赏。     
已邀请:
有关该主题的文章,请参阅从SQL Server下载和上载映像,包括高效的流式语义。你必须使用
SqlDataReader
打开
CommandBehavior.SequentialAccess
:   SequentialAccess提供了一种方法   DataReader来处理那些行   包含具有大二进制的列   值。而不是加载整个   行,SequentialAccess启用   DataReader将数据作为流加载。   然后,您可以使用GetBytes或   GetChars方法指定一个字节   开始读取操作的位置,   以及数据的有限缓冲区大小   被退回。 链接的文章提供了用于创建由SqlDataReader支持的Stream的完整代码,您可以简单地
Stream.CopyTo
(HttpResponse.OutputStream)
,或者如果您还没有.Net 4.0,则使用byte [] chunked copy。 这篇后续文章解释了如何使用FILESTREAM列有效地将大型VARBINARY数据流入和流出数据库。     

要回复问题请先登录注册