Компиляция 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.