Thay vì đọc toàn bộ kích thước bộ đệm, chỉ yêu cầu tối đa kích thước bộ đệm, nhưng cũng có nhiều nhất là những gì bạn tin là còn lại. Thành thật mà nói, bạn cũng có thể tạo bộ đệm có kích thước chính xác thay vì kích thước cố định.
// I assume this works for MySqlDataReader too...
int length = (int)reader.GetBytes(column, 0, null, 0, 0);
byte[] buffer = new byte[length];
int index = 0;
while (index < length)
{
int bytesRead = (int)reader.GetBytes(column, index,
buffer, index, length - index);
index += bytesRead;
}
Nhưng nếu bạn muốn một bộ đệm nhỏ hơn (ví dụ:nếu bạn đang xử lý nó một bộ đệm tại một thời điểm), bạn có thể sử dụng:
int length = (int)reader.GetBytes(column, 0, null, 0, 0);
byte[] buffer = new byte[length];
int index = 0;
while (index < length)
{
int bytesRead = (int)reader.GetBytes(column, index, buffer, 0,
Math.Max(buffer.Length, length - index));
// Process the buffer, up to value bytesRead
// ...
index += bytesRead;
}