QSqlQuery.record()始终为空

时间:2014-01-08 14:15:43

标签: c++ sql qt

我正在以这种方式编辑数据库:

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(),但没有帮助。我也尝试打开和关闭数据库,但它也没有帮助。我能做什么? :\

1 个答案:

答案 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();
}