tableView数据更改后,将数据保存在数据库中

时间:2014-06-10 13:44:03

标签: c++ database qt qtableview

我在tableView的QStandardItemModel中显示来自Sqlite数据库的数据,以便用户可以编辑它。一旦用户按下" Save"我想立即将这些更改保存回我的数据库。或尝试退出未保存的更改(在这种情况下给予promt)。

这可能是最好的方法吗?我在考虑运行更新查询。但有没有办法只在那些已被用户修改的行上运行查询?

2 个答案:

答案 0 :(得分:2)

您可以使用QSqlTableModelQTableView

中显示表格内容
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();

答案 1 :(得分:0)

您应该使用内置的QSqlTableModel类。它提供了可编辑的数据模型,可以自动保存更改。