Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySqlDataReader GetBytes Pufferproblem...

Anstatt die gesamte Puffergröße zu lesen, fragen Sie nur nach höchstens die Puffergröße, sondern auch höchstens das, was Ihrer Meinung nach übrig bleibt. Um ehrlich zu sein, können Sie genauso gut einen Puffer mit genau der richtigen Größe erstellen, anstatt einen Puffer mit fester Größe.

// 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;
}

Wenn Sie jedoch einen kleineren Puffer wünschen (z. B. wenn Sie einen Puffer nach dem anderen verarbeiten), können Sie Folgendes verwenden:

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;
}