Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QSqlDatabase: QSQLITE driver not loaded
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
Litkevich Yuriy
Делаю консольное приложение, работающее с БД, непойму как добится полноценной работы с БД. При инициализации БД (QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");) на консоль выводится ошибка:
QSqlDatabase: QSQLITE driver not loaded
Файл test.pro:
TEMPLATE = app
TARGET = tsreader
DEPENDPATH += .
INCLUDEPATH += .
CONFIG += console
QT += xml sql core
QT -=  gui
HEADERS += tsreader.h dbconnect.h ticket.h
SOURCES += main.cpp
Файл dbconnect.h:
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QString>
#include <QDebug>



//=====================================================
//        Установим соединение с БД
//=====================================================
bool OpenDb(QString dbname)
{
  bool ok;
  
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(dbname);
    ok = db.open();
    qDebug() << db << "\n\r";
    if (!ok)
    {
        qDebug() << "OpenDb: " << db.lastError().text() << "\n\r";
    }
    return ok;
}

Что упустил, может кто-нибудь увидит?
ViGOur
А ты уверен, что у тебя установлена поддержка QSQLITE?

Проверь в SQL Browser, который находится в %QTDIR%/demos/sqlbrowser/. При запуске там предлагаются варианты на данный момент поддерживаемых твоей оибой БД.

p.s. Как с компилил, так и работает. :)
Litkevich Yuriy
Вообще у меня работают проги с этой базой, но они с графическим интерфейсом. А эта консольная - не хотит :(
Litkevich Yuriy
Я в main() прибил QAplication, т.к. приложение консольное, и вроде так правильно. У меня пока идей ни каких не появилось.
Вот архивчик с проектом на всякий случай:Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
Кое-что прояснилось, QAplication-то я удалил, а замены ему не сделал, теперь так:
#include <QCoreApplication>
...
int main(int argc, char *argv[])
{
    ...
    QCoreApplication app(argc, argv);
    ...
    return app.exec();
}

Но так программа сама не завершается, приходится <Ctrl>+<C> нажимать, я вот попробовал последнюю строку сделать так:
return 0;,
все работает и программа сама завершается, но помоему это не корректно. Т.е. app.exec() не вызывается.
Tonal
Всё зависит от того, нужна ли тебе обработка сигналов и событий.
Если нет - то твоё решение вполне годится.
Если нужна - пускай app.exec() и по окончанию обработки зови app.quit() или QCoreApplication::exit(int)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.