У меня есть большое поле varbinary в одной из моих таблиц, и я хотел бы загрузить его по частям, чтобы показать индикатор прогресса загрузки в моем приложении.
Как разделить данные, отправленные в запросе SELECT?
Спасибо
Вы можете сделать это только с помощью вызова ODBC SQLGetData. Если предоставленный вами размер буфера меньше общего размера varbinary, он заполнит буфер и вернет SQL_SUCCESS_WITH_INFO и SQLSTATE 01004. Если вы вызовете его снова, он вернет следующий сегмент данных. Вы просто повторяете, пока все данные не будут получены. Чтобы узнать ваш прогресс в процентах, вы можете выбрать длину в качестве другого столбца.
См. Здесь множество советов для получения длинных данных .
См. SqlDataReader.GetBytes и CommandBehavior SequentialAccess.
Это позволит вам читать из varbinary (max) с несколькими вызовами. Затем вы можете отобразить прогресс между вызовами.
Для ODBC см. ISequentialStream ( здесь также ), вы также можете прочитать его порциями
Я использую ODBC с Qt4 в приложении C ++. Я думаю, что мне нужно разделить данные в операторе SELECT, чтобы добиться этого.
В любом случае, спасибо.