【发布时间】:2012-06-14 14:46:29
【问题描述】:
在我的数据库中,我们有一个 varbinary 字段,它以字节为单位存储文件内容。
由于文件很大,一次读取所有内容会导致超时,所以我想读取块中的数据,就像我们在 sql 中使用写入函数使用块写入数据一样。
请提出任何想法?
谢谢
【问题讨论】:
标签: c# asp.net sql-server sql-server-2008
在我的数据库中,我们有一个 varbinary 字段,它以字节为单位存储文件内容。
由于文件很大,一次读取所有内容会导致超时,所以我想读取块中的数据,就像我们在 sql 中使用写入函数使用块写入数据一样。
请提出任何想法?
谢谢
【问题讨论】:
标签: c# asp.net sql-server sql-server-2008
您查看过FILESTREAM 数据类型吗?
【讨论】:
要通过简单的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;
}
【讨论】: