Asp.net C# SQL Server 读取块中的二进制 SQL 字段数据

本文关键字:SQL 二进制 字段 数据 读取 net Server Asp | 更新日期: 2023-09-27 18:37:06

我的数据库我们有一个varbinary字段,它以字节形式存储文件内容。

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

请提出任何想法?

谢谢

Asp.net C# SQL Server 读取块中的二进制 SQL 字段数据

你看过FILESTREAM数据类型吗?

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

要通过一个简单的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;
}