I stedet for at læse hele bufferstørrelsen, spørg kun om højst bufferstørrelsen, men også højst hvad du mener er tilbage. For at være ærlig kan du lige så godt oprette en buffer af præcis den rigtige størrelse i stedet for en fast størrelse alligevel.
// 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;
}
Men hvis du ønskede en mindre buffer (f.eks. hvis du behandlede den en buffer ad gangen), kunne du bruge:
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;
}