Я согласен, что документация для MySqlDataReader
оставляет желать лучшего.
Когда вы передаете null
в качестве аргумента buffer
, GetBytes
возвращает общую длину поля.Когда вы передаете ненулевой аргумент buffer
, GetBytes
возвращает количество байтов, которые были записаны в буфер.
long length = yourReader.GetBytes(columnOrdinal, 0, null, 0, 0);
long offset = 0;
var buffer = new byte[4 * 1024]; // 4KB buffer
var ms = new MemoryStream();
while (length > 0)
{
long bytesRead = yourReader.GetBytes(columnOrdinal, offset, buffer, 0,
(int)Math.Min(length, buffer.Length));
if (bytesRead > 0)
{
ms.Write(buffer, 0, (int)bytesRead);
length -= bytesRead;
offset += bytesRead;
}
}