SQL под Qt: Начало

qt sql

Эта статья вкратце познакомит вас с основами использования модулей Qt для работы с реляционными базами данных. Предполагается, что знание SQL у вас уже имеется, хотя и не является столь критичным для понимания представленных примеров.

Рассматриваются базовые операции, необходимые для начала работы:

  • Открытие базы данных;
  • Выполнение запросов;
  • Выборка записей.

Подключение модуля sql к Qt-проекту

Для того, чтобы встроенные в Qt возможности для работы с SQL заработали, необходимо добавить в pro-файл следующую инструкцию:

Однако учитывайте, что драйвера различных баз данных устанавливаются в виде плагинов и могут отсутствовать в вашем дистрибутиве Qt. Особенно актуальной это проблема является под Windows в связи с лицензионными ограничениями на распространение бинарных пакетов. О том, как собрать нужный плагин, мы поговорим в другой раз.

Подключение к базе данных QSQLITE

Для простоты воспользуемся драйвером QSQLITE (предназначен для работы с SQLite), поскольку он предустановлен во всех известных мне дистрибутивах Qt. К тому же, вам не потребуется устанавливать отдельную систему управлениями базами данных.

Рассмотрим соответствующий код подключения:

Если все прошло нормально, то в результате работы этого кода у вас появится пустой файл test в рабочем каталоге приложения. Так же обратите внимание на следующие функции-члены класса QSqlDatabase, которые потребуются вам, когда вы решите воспользоваться внешним сервером баз данных:

  • isValid();
  • setHostName();
  • setPort();
  • setDatabaseName();
  • setUserName();
  • setPassword();

Выполнение запросов с помощью QSqlQuery

Создадим в открытой базе данных новую таблицу с помощью QSqlQuery:

Аналогичным образом с помощью функции-члена exec() можно выполнять любые запросы к базе данных. Однако имеется одна тонкость.

Вставка записей в базу данных

Если запрос использует внешние данные, то в целях безопасности не вставляйте их напрямую, а используйте комбинацию prepare() и bindValue():

Выборка записей из базы данных

Теперь рассмотрим способ получения записей из базы данных:

Заключение

Подводя итоги приведу полный листинг рассмотренного примера (обратите внимание на его завершение, дополненное кодом удаления таблицы и закрытия соединения с базой данных):

Понравилась статья? Поделиться с друзьями:
Добавить комментарий