Программирование баз данных с помощью Qt


База данных представляет собой систему хранения записей, организованных в виде таблиц. База данных может содержать от одной до нескольких сотен таблиц, которые бывают связаны между собой. Таблица состоит из набора строк и столбцов. Столбцы таблицы имеют имена и за каждым из них закреплен тип и/или область значения. Строки таблицы баз данных называются записями, а ячейки, на которые делится запись, — полями.

Первичный ключ — это уникальный идентификатор, который может представлять собой не только один столбец, но и целую комбинацию столбцов.

Пользователь может выполнять множество разных операций с таблицами, например: добавлять, изменять и удалять записи, вести поиск и т. д. Для составления подобного рода запросов был разработан язык SQL (Structured Query Language, язык структурированных запросов), который дает возможность не только осуществлять запросы и изменять данные, но и создавать новые базы данных.

Основными действиями, производимыми с базой данных, являются создание новой таблицы, чтение (выборка и проекция), вставка, изменение и удаление данных. Сразу следует сказать, что язык SQL нечувствителен к регистру, а это значит, что буква, набранная в верхнем или нижнем регистре, считается одной и той же. Например, SELECT = select = Select и т. д. В дальнейшем, для выделения ключевых слов SQL будем использовать верхний регистр.

Язык запросов SQL — это стандарт, который используется в большом количестве СУБД, что обеспечивает его платформонезависимость. Запросы (команды) — это своего рода вопросы, задаваемые базе данных, на которые она должна давать ответы.

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

Qt представляет модуль поддержки баз данных, классы которого разделены натри уровня: уровень драйверов, программный и пользовательский. Прежде чем начать работу с базой данных, необходимо соединиться с ней, активизировав драйвер. Запросы оформляются в виде строки. Для высылки запросов используется класс QSqlQuery.

При помощи концепции Интервью можно легко отображать данные SQL-моделей в представлениях.

Создание таблицы

Для создания таблицы используется оператор CREATE TABLE, в котором указываются имена столбцов таблицы, их тип, а также задается первичный ключ:

CREATE TABLE addressbook ( 
number INTEGER PRIMARY KEY NOT NULL, 
name VARCHAR(15), 
phone VARCHAR(12), 
email VARCHAR(15) 
);

Операция вставки

После создания таблицы можно добавлять данные. Для этого SQL предоставляет оператор вставки insert into. Сразу после названия таблицы нужно указать в скобках имена столбцов, в которые будут заноситься данные.

Сами данные указываются после ключевого слова values.

INSERT INTO addressbook (number, name, phone, email) 
VALUES(1, 'Piggy', '+49 631322187', 'piggy@mega.de'); 
INSERT INTO addressbook (number, name, phone, email) 
VALUES(2, 'Kermit', '+49 631322181', 'kermit@mega.de');

Чтение данных

Составной оператор select ... from ... where осуществляет операции выборки и проекции. Выборка соответствует выбору строк, а проекция — выбору столбцов. Этот оператор возвращает таблицу, созданную согласно заданным критериям.

  • Ключевое слово SELECT является оператором для проведения проекции, то есть в нем указываются столбцы, которые должны стать ответом на запрос. Если указать после SELECT знак *, то результирующая таблица будет содержать все столбцы таблицы, к которой был адресован запрос. Указание конкретных имен столбцов устраняет в ответе все остальные.
  • Ключевое слово FROM задает таблицу, к которой адресован запрос.
  • Ключевое слово WHERE является оператором выборки. Выборка осуществляется согласно условиям, указанным сразу после оператора.

Например, для получения адреса электронной почты мисс Piggy нужно сделать следующее:

SELECT email 
FROM addressbook 
WHERE name = 'Piggy'; 

Изменение данных

Для изменения данных таблицы используется составной оператор UPDATE ... SET. После названия таблицы в операторе SET указывается название столбца (или столбцов, через запятую), в который будет заноситься нужное значение. Изменение данных производится в строках, удовлетворяющих условию, поставленному в ключевом слове WHERE.

В показанном ниже примере производится замена адреса электронной почты мисс Piggy с piggy@mega.de на piggy@supermega.de:

UPDATE addressbook
SET email = 'piggy@supermega.de'
WHERE name = 'Piggy';

Удаление

Удаление строк из таблицы производится при помощи оператора DELETE ... FROM. После ключевого слова WHERE следует критерий, согласно которому производится удаление строк. Например, удалить адрес мисс Piggy из таблицы можно следующим образом:

DELETE FROM addressbook 
WHERE name = 'Piggy';

Читать далее: Использование QtSql в библиотеке Qt