|
SQLPutData -> Ошибка 22001 (String data right truncation)
|
|||
---|---|---|---|
#18+
Возился кто-нибудь уже с SQLPutData, SQLGetData для для операций с большими VARBINARY? У меня такая ситуевина. Нужно на C написать программу, способную читать и запсывать BLOB-ы заранее неизвестного размера. Поле в таблице - VARBINARY(MAX). Идея - читать и писать сегментами, а полю в программе аллоцировать выделять память, увеличивая по мере надобности. Почитал инструкцию по пользованию SQLBindParameter, SQLParamData, SQLPutData (для записи) и SQLGetData (для чтения). Попробовал сначала массив 40К заполнить цифирками 0-9, записать сегментами по 1К и потом прочитать - всё работает. На втором шаге читаю реальную таблицу с записанной картинкой. Размер по DATALENGTH() - 7233 байта. Прочиталось нормально. Пытаюсь прочитанное снова записать сегментами по 1К. Пока записываю первые 7 сегментов - все ОК, на последних 233 байтах - вылезает ошибка 22001 (String data right truncation). От чтения описания ошибки в документации майкрософта умнее не стал :-(. Остаток массива после 7233 заполнен бинарными нулями - откуда драйвер берет, что "more data was send for a long parameter... than was specified in the length buffer"??? Уже все перепробовал - не знаю где копать! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 13:01 |
|
|
start [/forum/topic.php?fid=46&fpage=39&tid=1685280]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 290ms |
total: | 409ms |
0 / 0 |