QSqlTableModel插入新记录,获取数据是QVariant(无效)

时间:2015-03-18 22:53:05

标签: qt qvariant qsqltablemodel

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

0 个答案:

没有答案