2

在我的数据库中,我们有一个 varbinary 字段,它以字节为单位存储文件内容。

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

请提出任何想法?

谢谢

4

2 回答 2

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;
}
于 2012-06-15T06:48:52.897 回答
1

你看过FILESTREAM数据类型吗?

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

于 2012-06-14T14:54:07.123 回答