Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z buforem MySqlDataReader GetBytes...

Zamiast czytać cały rozmiar bufora, poproś tylko o co najwyżej rozmiar bufora, ale także co najwyżej to, co według Ciebie zostało. Szczerze mówiąc, równie dobrze możesz utworzyć bufor o dokładnie odpowiednim rozmiarze, a nie o stałym rozmiarze.

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

Ale jeśli chciałbyś mieć mniejszy bufor (np. jeśli przetwarzałeś go w buforze na raz), możesz użyć:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy połączenia SQL otwierane za pomocą PDO w PHP muszą być zamknięte?

  2. Migracja Laravel (errno:150 Ograniczenie klucza obcego jest nieprawidłowo utworzone)

  3. Jak zmienić hasło roota MySQL lub MariaDB w systemie Linux?

  4. Zapytanie MySQL do wybrania danych z zeszłego tygodnia?

  5. php mysql porównaj długi i najdłuższy, wróć poniżej 10 mil