sql >> Databáze >  >> RDS >> Mysql

Problém s vyrovnávací pamětí MySqlDataReader GetBytes...

Namísto čtení celé velikosti vyrovnávací paměti požádejte pouze o nejvýše velikost vyrovnávací paměti, ale také maximálně to, co si myslíte, že zbývá. Abych byl upřímný, můžete stejně dobře vytvořit vyrovnávací paměť přesně správné velikosti, spíše než pevnou velikost.

// 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 pokud byste chtěli menší vyrovnávací paměť (např. pokud jste jej zpracovávali po vyrovnávací paměti), můžete použít:

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. Proč moje pesimistické zamykání v JPA s Oracle nefunguje

  2. Jaká je maximální délka dat, která mohu vložit do sloupce BLOB v MySQL?

  3. Znamená omezení Postgres UNIQUE index?

  4. Chyby T-SQL, úskalí a doporučené postupy – poddotazy