Сохранение данных в базе данных после изменения данных tableView



Я показываю данные из базы данных Sqlite в QStandardItemModel в tableView, чтобы пользователь мог их редактировать. Я хочу сохранить эти изменения обратно в мою базу данных сейчас, как только пользователь нажимает "сохранить" или пытается выйти с несохраненными изменениями (чтобы дать Промт, в таком случае).



Что может быть лучшим способом сделать это? Я думал о запуске запросов обновления. Но есть ли способ, чтобы я выполнял запросы только на тех строках, которые были изменены пользователем?

812   2  

2 ответов:

Вы можете использовать QSqlTableModel, чтобы показать содержимое таблицы в QTableView :

QSqlTableModel * model = new QSqlTableModel(this,db);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setTable( "someTable" );
model->select();

ui->tableView->setModel( model );

Для сохранения или отмены изменений вы можете начать транакцию и зафиксировать или откатить ее в конце. Начало транзакции выглядит следующим образом:

model->database().transaction();

Код для кнопки сохранения:

if(model->submitAll())
    model->database().commit();
else
    model->database().rollback();

Код для кнопки отмены:

model->revertAll();
model->database().rollback();

Следует использовать встроенный класс QSqlTableModel. Он предоставляет редактируемую модель данных и может автоматически сохранять изменения.

Comments

    Ничего не найдено.