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. Используя эти классы, можно создавать формы, представляющие дан­ные пользователям и позволяющие им вставлять, обновлять и удалять записи.


<< назад вперед >>