我有一个简单的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(无效)
如果我查看数据库,会插入记录,但如果我尝试从模型中获取记录,则会返回无效的QVariant。
我做错了什么?不应该为新插入的记录返回模型吗?