Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pamięć efektywny sposób odczytu danych BLOB w C#/SQL 2005

Zobacz ten doskonały artykuł lub ten post na blogu po długie wyjaśnienie, jak to zrobić.

Zasadniczo musisz użyć SqlDataReader i określić SequentialAccess do niego, gdy go utworzysz - wtedy możesz odczytać (lub zapisać) BLOB z bazy danych w kawałkach o dowolnej wielkości, która jest dla Ciebie najlepsza.

Zasadniczo coś takiego:

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();

Marek



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zmienić tryb SQL Server Windows na tryb mieszany (SQL Server 2008)?

  2. Może SQL Server PIVOT?

  3. Jak mapować wiele partycji do jednej grupy plików w programie SQL Server (T-SQL)

  4. Jak mogę zablokować tabelę podczas odczytu przy użyciu Entity Framework?

  5. Prosty sposób na transponowanie kolumn i wierszy w SQL?