Работа с базой данных SqLite в Qt

 

          Итак, начнем. Этот материал появился после долгих попыток найти в Сети внятное и подробное описание, как скрестить енота с бегемотом написать программу в Qt, использующую базу данных SQLite. Сложность процесса заключалась в том, что до этого ни первое, ни второе я не видел. Все найденные материалы были или понятными, но поверхностными, или подробными, но непонятными. Смотрите, читайте, разбирайтесь.

Рис 1. Внешний вид

Как видите, всё просто. 4 поля QLineEdit, 5 кнопок QPushButton, поле QTableView и 6 QLabel. Всё самое интересное скрыто в коде. По порядку:

1. Подключение библиотеки SQLite в файле main.cpp

  • добавляем #include <QtSql>
  • в процедуре main добавляем
    QSqlDatabase sdb = QSqlDatabase::addDatabase("QSQLITE");
    sdb.setDatabaseName("d:/Qt Projects/TelSpr_v3/telsprdatabase.sqlite");
    Это путь расположения файла базы данных. В вашем случае он будет другим.
    Обратите внимание, что путь прописывается с прямыми слэшами, а не обратными.

2. В mainwindow.cpp:

  • добавляем #include <QtSql>
  • QSqlQueryModel *model = new QSqlQueryModel();
    Создаем глобальный объект QSqlQueryModel.
  • Метод setQuery объекта QSqlQueryModel - перегруженный. Принимает как текст запроса, так и сам объект запроса. Во втором случае запрос должен быть активным. Вот этот момент нигде толком не описан, что такое активный запрос. Это объект запроса после успешного завершения метода exec().
  • Для вменяемых заголовков результирующей таблицы используется
    model->setHeaderData(0, Qt::Horizontal, "Фамилия");
        ​​​​​​где 0 - номер колонки,
       "Фамилия" - название колонки.

3. Вот сам исходник программы с файлом примера базы данных

4. Для создания начальной таблицы был использован SQLiteManager

Остальные функции по добавлению, удалению, редактированию и поиску записей в базе данных особого интереса не вызывают. Используются стандартные команды SQL.

Published on December 23rd, 2016