我正在以这种方式编辑数据库:
QSqlQuery query;
query.prepare("UPDATE student "
"SET name = ? "
"WHERE id = ?");
QString name = "t";
int id = 3;
query.addBindValue(name);
query.addBindValue(id);
query.exec(); // query exec returns true
QSqlRecord record = query.record(); // but the record is empty!
mTableModel->beforeInsert(record);
检索到的记录总是空的,但是QSqlTableModel
还是变了!我需要记录有效,因为我正在尝试将 sql 数据库与 std::vector 同步。
我正在像这样连接到数据库:
mDatabase = QSqlDatabase::addDatabase("QSQLITE");
mDatabase.setDatabaseName("database.db");
mDatabase.open();
我尝试调用 QSqlQuery::clear()
、QSqlQuery::finish()
但没有帮助。我也尝试打开和关闭数据库,但也无济于事。我能做些什么? :\
最佳答案
Qt 确实不是一种痛苦。
你所有的代码都很好。唯一错误的假设是更新请求会自动返回更新后的记录。您必须对此 id
发出新的选择请求,以获取 QSqlRecord
中的更新数据。
//[untested]
QSqlQuery select;
select.prepare("SELECT * from student where id = ?");
select.addBindValue(id);
if (select.exec() && select.next()) {
QSqlRecord record = select.record();
}
关于c++ - QSqlQuery.record() 总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998117/