В записи Подключение к базе данных в Qt я описала, каким образом в Qt можно создать подключение к базе. Теперь рассмотрим такую базовую операцию, как запрос на выборку данных. Сначала необходимо подключить следующие классы:
#include <QSqlQuery>
#include <QSqlError> //для вывода ошибок запросов
#include <QDebug> //для вывода отладочной информации
Пусть в базе данных имеется таблица следующего вида:
CREATE TABLE tableName
(
id integer NOT NULL,
fieldName character varying(100) NOT NULL,
CONSTRAINT entities_pkey PRIMARY KEY (id)
)
Таблица в PostgreSQL
В программе необходимо произвести выборку значений из этой таблицы по какому-то критерию: fieldName должно содержать в себе подстроку «имя»:
Способ 1: QString
QSqlQuery query;
if (!query.exec(QString("select * from tableName "
"where fieldName like '%1' "
"order by id").arg("%имя%")))
qDebug() << query.lastError().text();
Через строку с параметрами
Задаем строку запроса, вместо изменяющихся величин задаем параметры через «%».
Способ 2: bindValue
QSqlQuery query;
query.prepare("select * from tableName "
"where fieldName like :param "
"order by id");
query.bindValue(":param", QVariant("%имя%"));
if (!query.exec())
qDebug() << query.lastError().text();
Через bindValue
Преобразование QVariant() передаст в запрос параметр нужного типа.
Способ 3. addBindValue
QSqlQuery query;
query.prepare("select * from tableName "
"where fieldName like ? "
"order by id);
query.addBindValue(QVariant("%имя%"));
if (!query.exec())
qDebug() << query.lastError().text();
Через addBindValue
Здесь явно не указываются параметры. addBindValue последовательно по тексту запроса подставляет указанные значения параметров.
Понравилось это:
Нравится Загрузка...
Похожие записи