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

Ada*_*dam 3 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);
Run Code Online (Sandbox Code Playgroud)

现在如何保存数据库(sqlite.db)中的更改?

vah*_*cho 5

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

否则,您只需调用QSqlTableModel::submitAll()将所有未决更改提交到数据库。