Разделить varbinary в SELECT - PullRequest
0 голосов
/ 27 января 2009

У меня есть большое поле varbinary в одной из моих таблиц, и я хотел бы загрузить его по частям, чтобы показать индикатор прогресса загрузки в моем приложении.

Как разделить данные, отправленные в запросе SELECT?

Спасибо

Ответы [ 3 ]

1 голос
/ 19 февраля 2009

Вы можете сделать это только с помощью вызова ODBC SQLGetData. Если предоставленный вами размер буфера меньше общего размера varbinary, он заполнит буфер и вернет SQL_SUCCESS_WITH_INFO и SQLSTATE 01004. Если вы вызовете его снова, он вернет следующий сегмент данных. Вы просто повторяете, пока все данные не будут получены. Чтобы узнать ваш прогресс в процентах, вы можете выбрать длину в качестве другого столбца.

См. Здесь множество советов для получения длинных данных .

1 голос
/ 27 января 2009

См. SqlDataReader.GetBytes и CommandBehavior SequentialAccess.

Это позволит вам читать из varbinary (max) с несколькими вызовами. Затем вы можете отобразить прогресс между вызовами.

Для ODBC см. ISequentialStream ( здесь также ), вы также можете прочитать его порциями

0 голосов
/ 27 января 2009

Я использую ODBC с Qt4 в приложении C ++. Я думаю, что мне нужно разделить данные в операторе SELECT, чтобы добиться этого.

В любом случае, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...