QSqlTableModel submitall但数据库未更新

时间:2018-04-17 09:59:59

标签: sqlite qt-creator

我有一个QTableView和一个QSqlTableModel。当我更新QTableView中的单元格时,我正在调用“submitall”函数来更新数据库。

“Submitall”已激活,但数据库中没有任何变化,我不知道原因。

这是我的代码:

connect(ui->tableView->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(slot_commitChanges()));

QSqlTableModel *biensEssentielsModele = new QSqlTableModel();
biensEssentielsModele->setTable("biensEssentiels");
biensEssentielsModele->setEditStrategy(QSqlTableModel::OnManualSubmit);
biensEssentielsModele->select();
biensEssentielsModele->removeColumn(0);

slot_commitChanges()函数:

if(biensEssentielsModele->submitAll())
    qDebug() << "OK"; // This is the input I get
else
    qDebug() << "NOK";

我也试过使用交易,但结果是一样的。
数据库是SQLITE。

感谢任何帮助

谢谢:)。

编辑:我忘了提到我的数据库是一个sqlite文件。

更新:我刚刚意识到,当我添加一行(带有一个调用插槽的按钮“slot_addBiensEssentiels”)时,在数据库中更新了1个单元格中的更改。完成后,其他单元格不会更改

这是我的插槽代码“slot_addBiensEssentiels”:

biensEssentielsModele->insertRow(biensEssentielsModele->rowCount());

1 个答案:

答案 0 :(得分:1)

我发现了什么问题。
我不得不改变:

biensEssentielsModele->removeColumn(0);

到:

ui->tableView->hideColumn(0);

&#34; removeColumn()&#34;由于缺少列和引用而在尝试更新数据库时导致了一些问题。