sql >> Databáze >  >> RDS >> Sqlserver

Paměťově efektivní způsob čtení dat BLOB v C#/SQL 2005

Podívejte se na tento skvělý článek zde nebo tento příspěvek na blogu na dlouhé vysvětlení, jak to udělat.

V zásadě musíte použít SqlDataReader a zadat SequentialAccess do něj, když ho vytvoříte - pak můžete číst (nebo zapisovat) BLOB z databáze po částech libovolné velikosti, která je pro vás nejlepší.

V podstatě něco jako:

SqlDataReader myReader = getEmp.ExecuteReader(CommandBehavior.SequentialAccess);

while (myReader.Read())
{
   int startIndex = 0;

   // Read the bytes into outbyte[] and retain the number of bytes returned.
   retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

   // Continue reading and writing while there are bytes beyond the size of the buffer.
   while (retval == bufferSize)
   {
      // write the buffer to the output, e.g. a file
      ....

      // Reposition the start index to the end of the last buffer and fill the buffer.
      startIndex += bufferSize;
      retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
   }

   // write the last buffer to the output, e.g. a file
   ....
}

// Close the reader and the connection.
myReader.Close();

Marc



  1. Jak získat krátký název měsíce z data v MySQL

  2. 3 způsoby, jak vypsat všechny funkce v PostgreSQL

  3. Optimalizace dotazu MySQL LIKE term% ORDER BY int

  4. SQL Server dynamický PIVOT dotaz?