sql >> Databasteknik >  >> RDS >> Mysql

MySqlDataReader GetBytes buffertproblem...

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



  1. Exportera en AWS Postgres RDS-tabell till AWS S3

  2. Bestäm om en sql-sats börjar med ordet SELECT

  3. Det misslyckas att infoga ett JSON-kodat värde med speciella tecken i mySQL

  4. Hur man fyller datasetet med C# från Oracle-databasen