sql >> Database teknologi >  >> RDS >> Mysql

MySqlDataReader GetBytes buffer problem...

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



  1. Mysql utf32_unicode_ci og html charset utf-8 brugt, men tegn � vises

  2. En bestemt kolonne indsættes ikke, når en post gemmes

  3. CS50:LIKE operator, variabel substitution med % udvidelse

  4. MySQL COUNT() og nuller