我的数据库中有一个varbinary字段,用于以byte为单位存储文件内容。
由于文件很大并且一次性读取所有内容会导致超时,因此我想在块中读取数据,就像我们在sql中使用写入函数来使用块来编写数据一样。
请提出任何建议?
由于
答案 0 :(得分:1)
您是否查看了FILESTREAM
数据类型?
答案 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;
}