Назад Содержание Вперед

Работа с базами данных в Qt4

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

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

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

Назад Содержание Вперед