Программирование на C++ с использованием библиотеки Qt4

       

Работа с таблицами баз данных


Самый простой способ отображения информации базы данных в виде таблицы заключается в использовании классов QSqlQueryModel и QTableView: QSqlQueryModel model; model.setQuery("select * from employee");

QTableView view; view.setModel(&model); view.show();

Но вместо QsqlQueryModel можно использовать класс QSqlTableModel, позволяющий работать с таблицами баз данных на более высоком уровне, чем выполнение SQL-запросов. Тогда приведённый выше фрагмент кода запишется следующим образом: QSqlTableModel model; model.setTable("employee"); model.select();

QTableView view; view.setModel(&model); view.show(); Более сложный пример: вместо выполнения SQL-запроса SELECT * FROM employee WHERE salary >= 1000 ORDER BY id DESC достаточно задать фильтр и условие сортировки: QSqlTableModel model = QSqlTableModel(parent, db); model.setTable("employee"); // Имя таблицы базы данных. model.setFilter("salary >= 1000"); // Условие WHERE. model.setSort(0, Qt::DescendingOrder); // Сортировка по убыванию id. model.select(); // Получить данные.

После определения модели можно узнать значение любого поля любой записи, например: QString name = model.record(i).value("name").toString(); или int salary = model.data(model.index(i, 3)).toInt();

Для перебора всех записей набора данных: for (int i = 0; i < model.rowCount(); ++i) { QSqlRecord record = model.record(i); QString name = record.value("name").toString(); double salary = record.value("salary").toDouble(); ....... }

В листинге приведён пример работы с таблицей работников, созданной в результате выполнения предыдущей программы, а на рис. показан внешний вид таблицы в системе Windows.



Содержание раздела