Шаг 263.
Библиотека Qt.
Использование языка SQL в библиотеке Qt

    На этом шаге рассмотрим использование языка SQL в библиотеке Qt.

    Для применения баз данных библиотека Qt предоставляет отдельный модуль QtSql. Для его использования необходимо сообщить об этом — в проектный файл нужно просто добавить следующую строку:

QT += sql

    А для того, чтобы быть в состоянии работать с классами этого модуля, необходимо включить заголовочный метафайл QtSql.

#include <QtSql>

    Классы этого модуля разделяются на три уровня:

    СУБД, поддерживаемые Qt приведены в табл. 1.

Таблица 1. Идентификаторы менеджеров баз данных
Идентификатор
Описание
QOCI
Доступ к базам данных Oracle через Oracle Call Interface. Поддерживаются версии 7, 8 и 9
QODBC
ODBC (Open Database Connectivity, открытый интерфейс доступа к базе данных) — стандартный ODBC-драйвер для Microsoft SQL Server, IBM DB2, Sybase SQL, iODBC и других баз данных
QMYSQL
MySQL — самый популярный в настоящее время бесплатный менеджер базы данных
QTDS
Sybase Adaptive Server
QPSQL
Базы данных PosgreSQL с поддержкой SQL92/SQL3
QSQLITE2
SQLite версии 2
QSQLITE
SQLite версии 3
QIBASE
Borland InterBase
QDB2
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.




Предыдущий шаг Содержание Следующий шаг