我试图将一些数据插入QSqlTableModel
几个小时,遗憾的是没有任何成功。
在使用QSqlTableModel::insertRow()
和QSqlTableModel::setData()
函数无效尝试后,我在 Qt
论坛 中找到了以下代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("default.sqlite");
if(!db.open()) {
qDebug() << db.lastError().text();
}
QSqlQuery q(db);
if(!q.exec("create table if not exists 'table' (id integer)")) {
qDebug() << "Create table" << q.lastError().text();
}
QSqlTableModel model(this, db);
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
model.setTable("table");
model.select();
model.database().transaction();
int rowCount = model.rowCount();
qDebug() << rowCount;
if(!model.insertRows(rowCount, 4)) {
qDebug() << "insertRows" << model.lastError().text();
}
model.setData(model.index(rowCount + 0,0), rowCount +0);
model.setData(model.index(rowCount + 1,0), rowCount +1);
model.setData(model.index(rowCount + 2,0), rowCount +2);
model.setData(model.index(rowCount + 3,0), rowCount +3);
rowCount = model.rowCount();
if(!model.insertRow(rowCount)) {
qDebug() << "insertRow" << model.lastError().text();
}
model.setData(model.index(rowCount,0), rowCount);
if(model.submitAll()) {
model.database().commit();
} else {
model.database().rollback();
qDebug() << "Database Write Error" <<
"The database reported an error: " <<
model.lastError().text();
}
ui->tableView->setModel(&model);
尽管如此,也没有效果。当然数据库已正确创建,没有qDebug
个信息,但没有数据添加到表中。我还将我的模型连接到QTableView
以查看任何结果,但没有任何更改(仅显示空视图)。
我很困惑,因为我不知道我做错了什么。有人可以解释如何正确地将数据插入QSqlTableModel
吗?
我也尝试使用QSqlTableModel::insertRecord()
QSqlRecord r = model.record();
QSqlField field("id", QVariant::Int);
r.append(field);
model.insertRecord(0, r);
但也没有效果。