postgresql
Задали нам писать курсач по БД. Тема простая, но нужно заюзать всякие фичи БД, такие как домены, UDF, тригеры, хранимые процедуры и т.д. и т.п. В качестве языка программирования был выбран C++ с замечательной библиотекой Qt.

В качестве СУБД хотел использовать любимую, до недавнего времени, MySQL, но в виду отсутствия в ней поддержки доменов мой выбор пал на PostgreSQL(рано или поздно переведу все на PostgreSQL).

Перекомпилить Qt мне было лень, а так как поддержка odbc была включена изначально, то я решил заюзать PostgreSQL ODBC Driver. Скачать его можно здесь. Поставить то я его поставил, вот только в odbcad32.exe он так и не появился. Я подумал что дело в моей Windows 7 x64, как оказалось позже все дело именно в x64. И тут началось гугление. Нашлось два способа решить данную проблему.

Способ №1

Я нашел ресурс где модно скачать перекомпиленый драйвер под 64-битную архитектуру. Устанавливается он без проблем, в списке драйверов все появляется. Я создал DSN с нужными настройками, но при попытке открыть соединение мое Qt-шное приложение ругнулось на то что архитектура ODBC драйвера не соответствует архитектуре приложения (Qt у меня 32-х битное). Так что такой способ мне не подошел. И пришлось искать другой выход.

Способ №2

Ставил оригинальный ODBC драйвер. А потом правим реестр. Создаем файл pgodbc.reg с таким содержимым:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIPostgreSQL Unicode]
"APILevel"="1"
"ConnectFunctions"="YYN"
"Driver"="C:\postgresodbcdlls\psqlodbc35w.dll"
"DriverODBCVer"="03.51"
"FileUsage"="0"
"Setup"="C:\postgresodbcdlls\psqlodbc35w.dll"
"SQLLevel"="1"
"UsageCount"=dword:00000001

[HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIODBC Drivers]
"PostgreSQL Unicode"="Installed"

Путь к psqlodbc35w.dll меняем на свой.

Теперь оригинальный драйвер тоже виден в odbcad32.exe