Xem bài viết xuất sắc này tại đây hoặc bài đăng trên blog này để được giải thích dài về cách thực hiện.
Về cơ bản, bạn cần sử dụng SqlDataReader và chỉ định SequentialAccess
với nó khi bạn tạo nó - sau đó bạn có thể đọc (hoặc ghi) BLOB từ cơ sở dữ liệu với nhiều phần ở bất kỳ kích thước nào phù hợp nhất với bạn.
Về cơ bản như sau:
SqlDataReader myReader = getEmp.ExecuteReader(CommandBehavior.SequentialAccess);
while (myReader.Read())
{
int startIndex = 0;
// Read the bytes into outbyte[] and retain the number of bytes returned.
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
// Continue reading and writing while there are bytes beyond the size of the buffer.
while (retval == bufferSize)
{
// write the buffer to the output, e.g. a file
....
// Reposition the start index to the end of the last buffer and fill the buffer.
startIndex += bufferSize;
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
}
// write the last buffer to the output, e.g. a file
....
}
// Close the reader and the connection.
myReader.Close();
Marc