c++ - tableView数据更改后将数据保存到数据库中

标签 c++ database qt qtableview

我正在 QStandardItemModel 中显示来自 Sqlite 数据库的数据在 tableView 中,以便用户可以对其进行编辑。一旦用户按下“保存”或尝试以未保存的更改退出(在这种情况下给出提示),我现在想将这些更改保存回我的数据库。

最好的方法是什么?我正在考虑运行更新查询。但是有没有一种方法可以让我只对用户修改过的行运行查询?

最佳答案

您可以使用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();

关于c++ - tableView数据更改后将数据保存到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142663/

相关文章:

MySQL - 从 2 个表中选择结果中的几列应基于条件语句

php - 选择表 A 中需要表 B 中的信息的列的最简单方法?

c++ - QTreeWidgetItem 中的 QWidget 在重新排序 QTreeWidgetItem 后消失

c++ - 嵌套函数的线程安全和唯一执行

c++ - 迭代 unordered_map 时修改/删除条目的简洁方法?

c++ - 使用 std::transform 制作一对 vector

c - 如何从SQlite3中的SQL表中删除多列?

c++ - Qt 更新()不起作用

c++ - 在 Qtableview 上设置具有颜色(红色/绿色/黄色)的特定单元格

c++ - 解引用会导致崩溃,即使对于非NULL指针也是如此,为什么?