QSqlTableModel本身存在几个问题的。
但你的这个问题,我觉得你可能得先查一下你所用的驱动,是不是与所连接的数据库版本一致,不一致有可能会导致未知情况发生。
按照你代码的情况,应该是能够提交成功的。
QSqlTableModel存在的问题有:
1、transaction提交的时候,如果第一条记成功,后面出错,则第一条记录会被提交,而并未真正回滚
2、上面情况发生的情况下,revertAll()导致展示出的数据,与数据库中实际数据不一致。
代码:
model->database().transaction();
if (model->submitAll())
{
model->database().commit();
emit Committed();
QMessageBox::information(this, tr("Cached Table"), "提交成功!");
} else
{
model->database().rollback();
QString error = QString("The database reported an error: %1").arg(model->lastError().text());
QMessageBox::warning(this, tr("Cached Table"), error);
}
加入QT群2906359共同讨论