Asp.net c#sql server读取块中的二进制sql字段数据

时间:2012-06-14 14:46:30

标签: c# asp.net sql-server sql-server-2008

我的数据库中有一个varbinary字段,用于以byte为单位存储文件内容。

由于文件很大并且一次性读取所有内容会导致超时,因此我想在块中读取数据,就像我们在sql中使用写入函数来使用块来编写数据一样。

请提出任何建议?

由于

2 个答案:

答案 0 :(得分:1)

您是否查看了FILESTREAM数据类型?

有关如何操作的更多信息http://weblogs.asp.net/aghausman/archive/2009/03/16/saving-and-retrieving-file-using-filestream-sql-server-2008.aspx

答案 1 :(得分:1)

要通过简单的SELECT ...执行此操作,您可以转到ADO.NET,即ExecuteReader,指定CommandBehaviour.SequentialAccess标志。现在,您可以重复调用 GetBytes方法,将顺序块读入缓冲区。例如:

byte[] buffer = new byte[8040];
int bytes;
long offset = 0;
while((bytes = (int)reader.GetBytes(col, offset, buffer, 0, buffer.Length)) >0) {
    // TODO: do something with `bytes` bytes from `buffer`
    offset += bytes;
}