QT 5.01 QSqlDatabase подключается, QSqlQuery выполняется, однако из базы данных sqlite ничего не найдено

Как указано в заголовке, я написал код для 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 (), но он был пустым, что я думаю, это хорошо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]