Я ожидаю, что если вы успешно получите все данные в столбце изображения, вам нужно всего лишь записать их в файл, используя fwrite()
.
Обычный шаблон доступа для извлечения длинных данных изстолбец должен использовать функцию, которая получает его по одному куску за раз.Вот как работает функция ODBC SQLGetData ;вы передаете ему буфер фиксированной длины и длину, а его возвращаемое значение указывает, что данные были усечены, поэтому вы записываете данные, которые у вас есть, в файл, а затем вызываете его снова, пока он не вернет код успеха.
Глядя на документацию по SQL Toolkit National Instruments LabWindows / CVI, функция DBGetColBinaryBuffer()
может возвращать код -1, DB_TRUNCATION
, который описывается как «Буфер, переданный для хранения результата, недостаточно велик для хранениярезультат. Частичный результат был возвращен в буфер. ".
Я бы предположил, что DBGetColBinaryBuffer()
предназначен для использования в цикле, и если вы сделаете это и запишете частичные результаты в файл,в итоге вы получите правильное изображение.