SQL під Qt Початок - IT Notes

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

Розглядаються базові операції, необхідні початку роботи:

  • Відкриття бази даних;
  • Виконання запитів;
  • Вибір записів.

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

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

Однак враховуйте, що драйвери різних баз даних встановлюються у вигляді плагінів і можуть бути відсутніми у вашому дистрибутиві Qt. Особливо актуальною ця проблема є під Windows у зв'язку з ліцензійними обмеженнями поширення бінарних пакетів. Про те, як зібрати потрібний плагін, ми поговоримо іншим разом.

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

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

Розглянемо відповідний код підключення:

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

Виконання запитів за допомогою QSqlQuery

Створимо у відкритій базі даних нову таблицю за допомогою QSqlQuery:

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

Вставлення записів у базу даних

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

Вибір записів з бази даних

Тепер розглянемо спосіб отримання записів із бази даних:

Висновок

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