Две вещи:
- ODBC не может быть виноват, но драйвер ODBC вы используете. Возможно, это ошибка или одна из тех «функций», которые являются «необязательными».
- Даже если драйвер возвращает 0 для длины,
columnName
по-прежнему содержит строку с нулевым символом. Не знаю много о C#, но я уверен, что есть способ создать из этого строковый объект. Или вы могли бы рассчитывать на поиск нулевого символа завершения. В любом случае, поскольку ваш внешний buffer
должен быть достаточно большим, чтобы содержать наибольшее имя поддерживаемого столбца, копирование всего буфера columnName
должно быть в порядке.
Это, как говорится, я думаю, если бы вы улучшили свою функцию, чтобы просто вернуть строковый объект, вам было бы намного лучше. Меньше (указатель), значимое возвращаемое значение и обработка ошибок с исключениями. Просто предложение.
благодаря Майкл, это оказалось чтобы быть проблемой для сборки x64 и размера параметра, входящего в SQQLDescribeCol – Porton
Рад, что вы его нашли. Спасибо за обновление. –