QSqlTableModel::removeRow() 不删除 SQLite 数据库中的行
QSqlTableModel::removeRow() does not delete row in SQLite database
我使用 Windows、C++ 和 Qt 5.11.1。我有一个简单的单table SQLite 数据库。 table "templates" 包含主键:id INTEGER PRIMARY KEY
。当我尝试删除 "templates" 中的一行(使用 QSqlTableModel
)时,m_model.removeRow(0)
returns 正确且 submitAll()
returns 正确。但是 table 仍然拥有该行。我发现 Qt 生成了以下 SQL:
DELETE FROM templates WHERE "templates"."id" IS NULL
.
我想问题与 QSqlRecord::isGenerated
有关。我该如何解决这个错误?
如 QSqlTableModel::removeRows documentation :
Deletions are submitted immediately to the database. The model retains a blank row for successfully deleted row until refreshed with select().
抱歉,原因是在 QSqlTableModel
后代中覆盖了 data()
方法。 record()
需要方法 data(index, Qt::EditRole)
。
我使用 Windows、C++ 和 Qt 5.11.1。我有一个简单的单table SQLite 数据库。 table "templates" 包含主键:id INTEGER PRIMARY KEY
。当我尝试删除 "templates" 中的一行(使用 QSqlTableModel
)时,m_model.removeRow(0)
returns 正确且 submitAll()
returns 正确。但是 table 仍然拥有该行。我发现 Qt 生成了以下 SQL:
DELETE FROM templates WHERE "templates"."id" IS NULL
.
我想问题与 QSqlRecord::isGenerated
有关。我该如何解决这个错误?
如 QSqlTableModel::removeRows documentation :
Deletions are submitted immediately to the database. The model retains a blank row for successfully deleted row until refreshed with select().
抱歉,原因是在 QSqlTableModel
后代中覆盖了 data()
方法。 record()
需要方法 data(index, Qt::EditRole)
。