2013-12-11 4 views
1

я изменил значение ячейки в моей таблице:Как сохранить базу данных изменений через QSqlTableModel?

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
db.setDatabaseName("sqlite.db"); 
db.open(); 

QSqlTableModel *model = new QSqlTableModel(0, db); 
model->setTable("Expenses"); 
model->select(); 
model->setData(model->index(0,2), 100); 

Как сейчас, чтобы сохранить изменения в базе данных (sqlite.db)?

ответ

3

Как отмечает Qt docs, сохранение изменений зависит от настроек стратегии редактирования вашей модели. В зависимости от стратегии редактирования значение может быть применено к базе данных сразу или кэшировано в модели. Вы должны обратиться к функции QSqlTableModel::setEditStrategy() вашей модели и настроить тот, который соответствует вашим потребностям. Например, если вы установите стратегию редактирования на QSqlTableModel::OnFieldChange, все изменения будут применяться сразу после вызова функции setData().

В противном случае вам просто нужно позвонить QSqlTableModel::submitAll(), чтобы отправить все ожидающие изменения в базу данных.

Смежные вопросы