我有一个简单的 QSqlTableModel:
class UsersModel : public QSqlTableModel
{
Q_OBJECT
public:
UsersModel();
~UsersModel();
bool newUser(const QString &name, const QString &surname, const QString &birthday);
};
UsersModel::UsersModel()
{
setTable("users");
select();
}
当我在模型中插入一条新记录时,它被插入到数据库中,但是从模型中立即检索这条记录不起作用:
bool UsersModel::newUser(const QString &name, const QString &surname, const QString &birthday)
{
QSqlRecord rec = record();
rec.setGenerated("id", true);
rec.setValue("name", QVariant(name));
rec.setValue("surname", QVariant(surname));
rec.setValue("birthday", QVariant(birthday));
bool res = insertRecord(-1, rec);
if (res) {
qDebug() << "last inserted id:" << query().lastInsertId();
qDebug() << "name: " << record(rowCount() - 1).value("name");
}
return res;
}
newUser 方法调用的结果:
最后插入的 id:QVariant(qlonglong, 31)
名称:QVariant(Invalid)
如果我查看数据库,则会插入记录,但如果我尝试从模型中获取它,则会返回无效的 QVariant。
我做错了什么?模型不应该为新插入的记录返回数据吗?