На этом шаге рассмотрим использование языка SQL в библиотеке Qt.
Для применения баз данных библиотека Qt предоставляет отдельный модуль QtSql. Для его использования необходимо сообщить об этом — в проектный файл нужно просто добавить следующую строку:
QT += sql
А для того, чтобы быть в состоянии работать с классами этого модуля, необходимо включить заголовочный метафайл QtSql.
#include <QtSql>
Классы этого модуля разделяются на три уровня:
СУБД, поддерживаемые Qt приведены в табл. 1.
Доступ к базам данных Oracle через Oracle Call Interface. Поддерживаются версии 7, 8 и 9 | |
ODBC (Open Database Connectivity, открытый интерфейс доступа к базе данных) — стандартный ODBC-драйвер для Microsoft SQL Server, IBM DB2, Sybase SQL, iODBC и других баз данных | |
MySQL — самый популярный в настоящее время бесплатный менеджер базы данных | |
Sybase Adaptive Server | |
Базы данных PosgreSQL с поддержкой SQL92/SQL3 | |
SQLite версии 2 | |
SQLite версии 3 | |
Borland InterBase | |
DB/2 — платформонезависимая база данных, разработанная IBM |
Если в таблице нет поддержки нужной базы данных, то потребуется самостоятельно написать для нее драйвер.
Все СУБД, указанные в этой таблице (за исключением SQLite), работают в режиме "клиент-сервер", при котором сервер базы данных работает как отдельный процесс и взаимодействует с клиентской частью по сети. Если приложение рассчитано только на работу с локальными данными, то для базы данных удобнее всего будет использовать SQLite, кроме того, драйвер и сама база по умолчанию всегда находятся вместе с Qt.
По умолчанию Qt собирается так, что драйверы баз данных используются в виде файлов расширений (plug-ins). В процессе сборки находятся установленные в системе пакеты баз данных и к ним компилируются соответствующие файлы расширений. Если Qt не может найти установленную на компьютере базу данных автоматически, что обычно случается когда она установлена не по своему стандартному пути, то тогда в сценарии конфигурации сборки configure нужно передать ее точное местонахождение и указать в опции –I каталог заголовочных файлов и –L ее библиотеки. В опции –plugin-sql- дожно следовать одно из следующих значений: db2, ibase, mysql, oci, odbc, psql, sqlite, sqlite2 или tbs. Например, для MySQL в Windows:
configure –plugin-sql-mysql –I C:\mysql\include –L C:\mysql\lib
Для Linux:
configure –plugin-sql-mysql –I/urs/local/mysql/include –L/urs/local/mysql/lib
Если нужно, чтобы расширение драйвера было статически прилинковано при сборке к самому модулю библиотеки QtSql, то просто замените в вышестоящих командах опцию –plugin-sql- на –qt-sql-.
Если же библиотека уже собрана и нужно дополнить ее файлом расширения базы данных, то его можно собрать и отдельно. Нужно зайти в каталог исходных файлов Qt (src), а затем в подкаталог plugins/sqldrivers. В этом подкаталоге выбрать нужный каталог расширения и соберать его. Например, для PostgreSQL каталог называется psql. Теперь нужно зайти в него и собрать сам драйвер, указав все нужные для этого пути в Windows:
qmake "INCLUDEPATH+=C:/psql/include LIBS+=C:/psql/libpq.a"
Для Linux:
qmake "INCLUDEPATH+=/usr/include/pgsql LIBS+=-LC:/usr/lib –lpg"
На следующем шаге рассмотрим пример создания базы данных в SQLite.