Использование языка SQL в библиотеке Qt

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

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

QT += sql

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

#include <QtSql>

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

  • Уровень драйверов. К первому уровню относятся классы для получения данных на физическом уровне. Это такие классы, как QSqlDriver, QSqlDriverCreator<T*>, QSqlDriverCreatorBase, QSqlDriverPlugin и QSqlResult.
  • Программный уровень. Классы второго уровня предоставляют программный интерфейс для обращения к базе данных. К классам этого уровня относятся следующие классы: QSqlDatabase, QSqlQuery, QSqlError, QSqlField, QSqlIndex и QSqlRecord.
  • Уровень пользовательского интерфейса. Третий уровень предоставляет модели для отображения результатов запросов в представлениях интервью. К этим классам относятся: QSqlQueryModel, QSqlTableModel и QSqlRelationalTableModel.

   
СУБД, поддерживаемые 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.

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий