Istället för att läsa hela buffertstorleken, fråga bara efter högst buffertstorleken, men också på sin höjd vad du tror finns kvar. För att vara ärlig kan du lika gärna skapa en buffert av exakt rätt storlek snarare än en fast storlek ändå.
// 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 om du ville ha en mindre buffert (t.ex. om du bearbetade en buffert åt gången) kan du använda:
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;
}