1

我有一个简单的 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。
我做错了什么?模型不应该为新插入的记录返回数据吗?

4

0 回答 0