Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Выполнение запросов вставки, обновления и удаления




Выполнение запросов выборки и возврат результатов

Соединение с БД

Класс QSqlDatabase обеспечивает интерфейс для получения доступа к БД через подключение. Экземпляр класса QSQlDatabase представляет в программе подключение к БД.

1. QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");2. db.setDatabaseName("borey");3. db.setUserName("user");4. db.setPassword("password");5. bool ok = db.open();

 

Для создания подключения вызывается статическая функция addDatabase(). Ей передается драйвер или тип драйвера.

Как только объект QSqlDatabase создан, установить параметры подключения можно с помощью функций: setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort() и setConnectOptions(). Далее необходимо вызвать функцию open() для открытия подключения. ·

Для выполнения запросов выборки можно просто создать объект типа QSqlQuery и вызвать функцию QSqlQuery::exec(), например:

1. QSqlQuery query;

2. query.exec("SELECT name, salary FROM employee "

3. "WHERE salary > 50000");

4. while (query.next())

5. {

6. QString name = query.value(0).toString();

7. int salary = query.value(1).toInt();

8. qDebug() << name << salary;

9. }

В конструктор класса QSqlQuery дополнительно можно передать объект QSqlDatabase, для указания, какое конкретно подключение использовать при выполнении запроса. В примере выше мы не указывали подключение, используя таким образом подключение по умолчанию.

QSqlQuery обеспечивает доступ к результирующему множеству записей. После вызова exec(), внутренний указатель QSqlQuery располагается на позиции перед первой записью. Необходимо вызвать QSqlQuery::next() для продвидения к первой записи, затем опять next() несколько раз для получения доступа к записям, пока функция next() не вернет false.

Функция QSqlQuery::value() возвращает значение поля текущей записи. Поля пронумерованы, начиная с нуля. QSqlQuery::value() возвращает тип QVariant, тип, который может хранить разные типы данных C++ и Qt, например: QString или QByteArray. Если БД поддерживает такую возможность, мы можем вызвать QSqlQuery::size() для определения количества результирующих записей запроса. ·

 

QSqlQuery позволяет выполнять произвольные предложения SQL, а не только SELECT. Следующий пример вставляет запись в таблицу, используя предложение INSERT:

QSqlQuery query;

query.exec("INSERT INTO employee (id, name, salary) "

"VALUES (1001, 'Thad Beaumont', 65000)");

Вызов команд обновления и удаления записей в подобно добавлению записей. Пример обновления записей:

1. QSqlQuery query;2. query.exec("UPDATE employee SET salary = 70000 WHERE id = 1003");

 

Пример удаления записей:

1. QSqlQuery query;2. query.exec("DELETE FROM employee WHERE id = 1007");

·




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 488; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.