Lihat artikel yang luar biasa ini di sini atau postingan blog ini untuk penjelasan panjang bagaimana melakukannya.
Pada dasarnya, Anda perlu menggunakan SqlDataReader dan menentukan SequentialAccess
untuk itu ketika Anda membuatnya - maka Anda dapat membaca (atau menulis) BLOB dari database dalam potongan ukuran apa pun yang terbaik untuk Anda.
Pada dasarnya sesuatu seperti:
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