2016-08-17 6 views

ответ

1

Две вещи:

  • ODBC не может быть виноват, но драйвер ODBC вы используете. Возможно, это ошибка или одна из тех «функций», которые являются «необязательными».
  • Даже если драйвер возвращает 0 для длины, columnName по-прежнему содержит строку с нулевым символом. Не знаю много о C#, но я уверен, что есть способ создать из этого строковый объект. Или вы могли бы рассчитывать на поиск нулевого символа завершения. В любом случае, поскольку ваш внешний buffer должен быть достаточно большим, чтобы содержать наибольшее имя поддерживаемого столбца, копирование всего буфера columnName должно быть в порядке.

Это, как говорится, я думаю, если бы вы улучшили свою функцию, чтобы просто вернуть строковый объект, вам было бы намного лучше. Меньше (указатель), значимое возвращаемое значение и обработка ошибок с исключениями. Просто предложение.

+0

благодаря Майкл, это оказалось чтобы быть проблемой для сборки x64 и размера параметра, входящего в SQQLDescribeCol – Porton

+0

Рад, что вы его нашли. Спасибо за обновление. –