| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Базы данных > Windows. ODBC. MDB база. Проблема с SQLColumns |
| Автор: ПостороннимВ 14.8.2011, 13:19 | ||
| Коллеги, кто работал с функциями ODBC напрямую? передо мной задача - получить полное описание всех таблиц в базе MDB. Список таблиц я прекрасно получаю и обрабатываю с помощью SQLTables. Список колонок получается при помощи SQLColumns. С именами и типами данных все в порядке. А вот с признаком NOT NULL - нет! Сколько бы ни было в таблице колонок NOT NULL, для всех них возвращается NULLABLE = 1 (11 позиция) и ISNULLABLE = "YES" (18 позиция). У гугля спрашивал - только еще 1 человек в 2006 году интересовался подобным, и ему никто не ответил.... Вот есть программка http://alekseyrybakov.narod.ru/ViewODBC.zip, так она показывает все правильно. Посмотрел таблицу импорта exe-шника - автор вроде тоже пользуется SQLColumns, включил трассировку ODBC, и потом у себя воспроизвел те же вызовы с теми же параметрами - и нифига. Правда, он получает данные из result set-а, сделав предварительно SQLBindCol, как в примере в MSDN, а я через SQLGetData, но это же непринципиально, ИМХО. Я и через SQLBindCol пробовал - то же самое, Nullable = 1, хоть тресни. Написал тестовую прогу, она коннектится к базе db1.mdb, лежащей в текущем каталоге, создает таблицу с двумя NOT NULL колонками, и сразу же запрашивает инфу о колонках этой таблицы. Если обнаружена колонка NOT NULL, то должен выскочить MessageBox. Я уж пробовал и Nullable вместо SQLSMALLINT определять как SQLINTEGER - все равно 1. Может, я ошибаюсь где-то в программе? У меня такое чувство, что есть какая-то хитрость, которую знают все, кроме меня, потому что с виду все просто (для меня), и я не пойму, что можно подправить в получении полей запроса, чтобы заработало.
|
| Автор: Kirow 11.10.2011, 20:50 | ||
| Не могли бы привести пример кода, как с помощью SQLTables получить список таблиц БД? А то к сожалению у меня не получается...получаю пути к файлам вместо имен таблиц. UPD: Нашел простой и рабочий пример кода с получением таблиц... Скопирую, на всякий случай...вдруг кому-либо понадобится
|