Daripada membaca seluruh ukuran buffer, hanya minta paling banyak ukuran buffer, tetapi juga paling banyak apa yang Anda yakini tersisa. Sejujurnya, Anda mungkin juga membuat buffer dengan ukuran yang tepat daripada ukuran tetap.
// 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;
}
Tetapi jika Anda menginginkan buffer yang lebih kecil (mis. jika Anda memproses buffer sekaligus), Anda dapat menggunakan:
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;
}