Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème de tampon MySqlDataReader GetBytes...

Plutôt que de lire toute la taille du tampon, demandez seulement au plus la taille du tampon, mais aussi au maximum ce que vous pensez qu'il reste. Pour être honnête, autant créer un tampon de taille exacte plutôt qu'un tampon de taille fixe de toute façon.

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

Mais si vous vouliez un tampon plus petit (par exemple, si vous le traitiez un tampon à la fois), vous pourriez utiliser :

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