QSqlTableModel model; model.setTable("cd"); model.setFilter("id = 125"); model.selectО; if (model. rowCountO == 1) {
QSqlRecord record = model.record(O);
record.setValue("title", "Melody A.M.");
record.setValue("year", record.value("year").toInt() + 1);
model.setRecord(0, record);
model. submitAHO;
}
Если имеется запись, удовлетворяющая заданному фильтру, доступ к ней мы получаем при помощи функции QSqlTableModel:: recordO. Мы осуществляем наши изменения и вновь записываем в базу данных запись с новыми значениями полей.
Кроме того, обновление можно выполнить при помощи функции setData(), как это делается для модели, отличной от SQL-модели. Для получения доступа к полям записи используются индексы модели с указанием номера строки (записи) и столбца (поля):
model, select О;
if (model.rowCount() == 1) {
model.setData(model.index(0, 1), "Melody A.M."); model.setData(model.index(0, 3),
model.data(model.index(0, 3)).toInt() + 1); model.submitAll();
}
Удаление записи напоминает ее обновление:
model.setTable("cd"); model.setFilter("id = 125"); model. selectO; if (model. rowCountO == 1) {
model.removeRows(0, 1);
model. submitAHO;
}
В вызове remove Rows () указываются номер строки первой удаляемой записи и количество удаляемых записей. В следующем примере удаляются все записи, удовлетворяющие фильтру:
model.setTable("cd");
model.setFilter("year < 1990");
model. selectO;
if (model. rowCountO > 0) {
model. removeRows(0, model. rowCountO);
model. submitAHO;
}
Классы QSqlQuery и QSqlTableModel обеспечивают интерфейс между Qt и базой данных SQL. Используя эти классы, можно создавать формы, представляющие данные пользователям и позволяющие им вставлять, обновлять и удалять записи.
<< назад вперед >>