crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSqlDatabase: QSQLITE driver not loaded, в консольном Qt приложении
Litkevich Yuriy
  опции профиля:
сообщение 25.5.2008, 14:13
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Делаю консольное приложение, работающее с БД, непойму как добится полноценной работы с БД. При инициализации БД (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
  опции профиля:
сообщение 25.5.2008, 15:40
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А ты уверен, что у тебя установлена поддержка QSQLITE?

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

p.s. Как с компилил, так и работает. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.5.2008, 15:44
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Вообще у меня работают проги с этой базой, но они с графическим интерфейсом. А эта консольная - не хотит :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.5.2008, 18:56
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Я в main() прибил QAplication, т.к. приложение консольное, и вроде так правильно. У меня пока идей ни каких не появилось.
Вот архивчик с проектом на всякий случай:Прикрепленный файл  rtt_tool_2.zip ( 3.26 килобайт ) Кол-во скачиваний: 210
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.5.2008, 20:50
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Кое-что прояснилось, QAplication-то я удалил, а замены ему не сделал, теперь так:
#include <QCoreApplication>
...
int main(int argc, char *argv[])
{
    ...
    QCoreApplication app(argc, argv);
    ...
    return app.exec();
}

Но так программа сама не завершается, приходится <Ctrl>+<C> нажимать, я вот попробовал последнюю строку сделать так:
return 0;,
все работает и программа сама завершается, но помоему это не корректно. Т.е. app.exec() не вызывается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 27.5.2008, 7:13
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Всё зависит от того, нужна ли тебе обработка сигналов и событий.
Если нет - то твоё решение вполне годится.
Если нужна - пускай app.exec() и по окончанию обработки зови app.quit() или QCoreApplication::exit(int)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 13:02