SQL під Qt Початок - IT Notes
Ця нотатка коротко ознайомить вас із основами використання модулів Qt для роботи з реляційними базами даних. Передбачається, що знання SQL у вас вже є, хоч і не є таким критичним для розуміння наведених прикладів.
Розглядаються базові операції, необхідні початку роботи:
- Відкриття бази даних;
- Виконання запитів;
- Вибір записів.
Підключення модуля SQL до Qt-проекту
Для того, щоб вбудовані в Qt можливості для роботи з SQL запрацювали, необхідно додати до pro-файлу наступну інструкцію:
Однак враховуйте, що драйвери різних баз даних встановлюються у вигляді плагінів і можуть бути відсутніми у вашому дистрибутиві Qt. Особливо актуальною ця проблема є під Windows у зв'язку з ліцензійними обмеженнями поширення бінарних пакетів. Про те, як зібрати потрібний плагін, ми поговоримо іншим разом.
Підключення до бази даних QSQLITE
Для простоти скористаємося драйвером QSQLITE (призначений для роботи з SQLite), оскільки він встановлений у всіх відомих мені дистрибутивах Qt. До того ж, вам не потрібно встановлювати окрему систему управління базами даних.
Розглянемо відповідний код підключення:
Якщо все пройшло нормально, то в результаті цього коду у вас з'явиться порожній файл test в робочому каталозі програми. Також зверніть увагу на такі функції-члени класу QSqlDatabase , які будуть потрібні вам, коли ви вирішите скористатися зовнішнім сервером баз даних:
Виконання запитів за допомогою QSqlQuery
Створимо у відкритій базі даних нову таблицю за допомогою QSqlQuery:
Аналогічно за допомогою функції-члена exec() можна виконувати будь-які запити добазі даних. Однак є одна тонкість.
Вставлення записів у базу даних
Якщо запит використовує зовнішні дані, з метою безпеки не вставляйте їх безпосередньо, а використовуйте комбінацію prepare() і bindValue() :
Вибір записів з бази даних
Тепер розглянемо спосіб отримання записів із бази даних:
Висновок
Підводячи підсумки, наведу повний лістинг розглянутого прикладу (зверніть увагу на його завершення, доповнене кодом видалення таблиці та закриття з'єднання з базою даних):