Программирование на C++ с использованием библиотеки Qt4

         

Компиляция SQL-драйверов


При компиляции Qt4 по умолчанию устанавливается только драйвер QSQLITE. Чтобы подключить поддержку остальных СУБД, надо при запуске configure указать параметры -qt-sql-mysql, -qt-sql-psql, -qt-sql-odbc, -qt-sql-ibase для компиляции соответствующих статических библиотек или -plugin-sql-mysql, -plugin-sql-psql, -plugin-sql-odbc, -plugin-sql-ibase для компиляции динамических библиотек.

Компилятору и компоновщику потребуются заголовочные файлы и библиотеки, поставляемые вместе с соответствующими СУБД. Поэтому при запуске configure обычно требуется указать параметр -Iпуть_к_h-файлам и -Lпуть_к_lib. В результате компиляции в каталоге lib появится нужная динамическая библиотека. Чтобы узнать, драйверы каких СУБД уже установлены, можно открыть демонстрационную программу demos/sqlbrowser.

Если библиотека Qt уже скомпилирована, то можно просто зайти в каталог qt/src/plugins/sqldrivers/НужныйДрайвер и выполнить компиляцию находящегося там проекта *.pro.

Например, для сборки драйвера ODBC в Windows: cd %QTDIR%\src\plugins\sqldrivers\odbc qmake -o Makefile odbc.pro mingw32-make При использовании Visual C++ последняя команда, разумеется, nmake.

В Linux: cd $QTDIR/src/plugins/sqldrivers/odbc qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc" make

Для сборки драйвера PostgreSQL в Windows: cd %QTDIR%\src\plugins\sqldrivers\psql qmake -o Makefile "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.a" psql.pro mingw32-make (все пути не должны содержать пробелов).

В Linux: cd $QTDIR/src/plugins/sqldrivers/psql qmake -o Makefile "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro make Заметим, что драйвер QPSQL может работать только с кодировкой utf-8.

Для сборки драйвера MySQL в Windows: cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.a" mysql.pro mingw32-make (все пути не должны содержать пробелов). Для компиляции с помощью Microsoft Visual C++ вместо libmysql.a надо указать libmysql.lib.

В Linux: cd $QTDIR/src/plugins/sqldrivers/mysql qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro make


Результат компиляции (динамические библиотеки) помещается в каталог plugins/sqldrivers.

Обычно для Windows поставляются библиотеки *.lib, рассчитанные на использование компилятора Microsoft. Поскольку свободная версия Qt4 для Windows поддерживает только MinGW, то перед сборкой SQL-драйвера придётся сначала сгенерировать def-файл, например: cd c:\mysql\lib\opt reimp -d libmysql.lib (утилита reimp поставляется вместе с MSYS), а затем сформировать библиотеку *.a: dlltool -d libmysql.def -l libmysql.a libmysql.dll -k

Перед выполнением приложений Qt, если используются SQL-драйверы, скомпилированные в виде динамических библиотек, требуется позаботиться о том, чтобы сами эти библиотеки, а также, в свою очредь, используемые ими библиотеки, поставляемые с соответствующими СУБД, были доступны по стандартным путям поиска. В окончательных релизах, поставляемых пользователю, Qt-драйверы qsql* лучше всего размещать в подкаталоге ./plugins/sqldrivers, а используемые ими библиотеки -- либо в каталоге самой программы, либо в стандартном каталоге Windows/system32 (для системы Windows) или usr/lib (для Linux).



В библиотеке Qt4 имеются драйверы для работы со следующими СУБД:

QDB2 -- IBM DB2 версии не ниже 7.1; QIBASE -- Borland InterBase; QMYSQL -- MySQL; QOCI -- Oracle; QODBC -- ODBC (в том числе Microsoft SQL Server); QPSQL -- PostgreSQL; QSQLITE -- SQLite версии не ниже 3; QSQLITE2 -- SQLite версии 2; QTDS -- Sybase Adaptive Server.

В Qt4 Open Source Edition отсутствует поддержка коммерческих СУБД Oracle, Sybase и DB2, т.к. драйверы для них распространяются под лицензией, не совместимой с GPL.