如标题所述,我已编写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()都是false。 OMBI.db已被放置在QT的项目文件夹中,因为这是我第一次使用QT我不确定这是否是正确的协议。
我一直试图找到解决方案的时间太长了,我已经搜索了很多,但无济于事。希望你们中的一些大师可以解释我做错了什么。
编辑:
我已经确定exec()失败了,query.lastError()报告“没有查询无法获取行”。我现在正试图确定是什么导致查询失败如此悲惨。我检查了_db-&gt; lastError(),但它是空的,我认为这是一件好事。