我正在以这种方式编辑数据库:
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 db与std :: vector同步。
我正在连接数据库,如下所示:
mDatabase = QSqlDatabase::addDatabase("QSQLITE");
mDatabase.setDatabaseName("database.db");
mDatabase.open();
我尝试拨打QSqlQuery::clear()
,QSqlQuery::finish()
,但没有帮助。我也尝试打开和关闭数据库,但它也没有帮助。我能做什么? :\
答案 0 :(得分:0)
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();
}