如何通过QSqlTableModel保存更改数据库?

时间:2013-12-11 15:25:47

标签: c++ database qt

我在表格中更改了单元格的值:

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)?

1 个答案:

答案 0 :(得分:4)

正如Qt docs所述,保存更改取决于模型的编辑策略设置。根据编辑策略,该值可能会立即应用于数据库,也可能会缓存在模型中。 您应该参考模型的QSqlTableModel::setEditStrategy()功能并设置符合您需求的功能。例如,如果您将修改策略设置为QSqlTableModel::OnFieldChange,则所有更改都将在setData()函数调用后立即应用。

否则,您只需要调用QSqlTableModel::submitAll()即可将所有挂起的更改提交到数据库。