1

如标题所述,我为 QT 编写了连接到 sqlite 数据库的代码。

bool FilterData::initDatabase(){
    QDir d;
    _db = new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE"));
    _db->setDatabaseName("OMBI.db");
    return _db->open();
}

void FilterData::loadFromDB(){
    if(initDatabase()){
    //set up the query
    QSqlQuery query(*_db);
    //vectors for storing results from the query
    QVector<QString>* measures = new QVector<QString>();
    QVector<QString>* title = new QVector<QString>();
    QVector<QString>* type = new QVector<QString>();

    query.prepare("SELECT * FROM measures");
    query.exec();


    while (query.next()) {
        measures->push_front(query.value(0).toString());
        title->push_front(query.value(1).toString());
        type->push_front(query.value(2).toString());
    }

    std::cout<<"Passed reading query results"<<std::endl;

    std::cout<<measures->size()<<std::endl;
    emit measuresReady(*measures, *title, *type);
}
}

数据库连接和打开都很好,但是在测试 query.first()、query.next()、query.isValid()、query.isActive() 和 query.isSelect() 的结果都是错误的。OMBI.db 已放置在 QT 的项目文件夹中,因为这是我第一次使用 QT,我不确定这是否是正确的协议。

我一直试图找到解决这个问题的方法太久了,我已经搜索了很多,但无济于事。希望你们中的一些大师可以阐明我做错了什么。

编辑:

我已经确定 exec() 失败并且 query.lastError() 报告“没有查询无法获取行”。我现在正试图确定是什么导致查询如此悲惨地失败。我检查了 _db->lastError() 但它是空的,我认为这是一件好事。

4

0 回答 0