Обновление записи в QSqlTableModel - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь обновить запись, и у меня есть это:

tableModel->select();
QModelIndex index = ui.tableView->currentIndex();
QString sqlQuery = QString("UPDATE %1 SET firstname=:firstname, lastname=:lastname,  country=:country, city=:city WHERE id=:id)").arg(tableName);
query.prepare(sqlQuery);
QSqlRecord recordz = tableModel->record(index.row());

query.bindValue(":firstname", ui.fEdit->text());
query.bindValue(":lastname",  ui.lnEdit->text());
query.bindValue(":country", ui.cEdit->text());
query.bindValue(":city",  ui.cityEdit->text());
query.bindValue(":id", recordz.value("id").toInt());
query.exec();
tableModel->submitAll();

Приложение компилируется без ошибок, но не сохраняет никаких изменений.

1 Ответ

0 голосов
/ 12 сентября 2011
    query.bindValue(":id", ui.tableView->currentIndex());

Вот твоя оскорбительная строка кода. Вы можете использовать функции данных, чтобы попытаться вернуть фактический индекс или значение, но помните свой индекс tableView! = Индекс базы данных SQL. Когда вы удаляете строку, ваш индекс в базе данных будет отличаться от вашего индекса в Qt, поэтому вам нужно будет включить фактический идентификатор БД в ваши первоначальные запросы SQL и сохранить его вместе с другими значениями, а затем вернуть его при запуске Ваш запрос на обновление.

...