LINUX.ORG.RU

qt + plugin sqlite


0

0

Не могу подгрузить драйвер sqlite. Собрал Qt с опциями -plugin-sql-sqlite -system-sqlite. В папке с qt /plugins/sqldrivers есть файлы
libqsqlite.so
libqsqlite.so.debug
libqsqlpsql.so
libqsqlpsql.so.debug
sqlite3 установлен. Пишу такой код:
QSqlDatabase* db = new QSqlDatabase();
db->addDatabase("QSQLITE");
db->setDatabaseName("./main.db");
if (!db->open()) {
QMessageBox::warning(0, QObject::tr("Database Error"), db->lastError().text());
return NULL;
}
И получаю сообщение: "driver not loaded."
Как подгрузить драйвер? Может надо где-то пути к header'ам указать? Или при сборке еще?

anonymous

> Может надо где-то пути к header'ам указать? Или при сборке еще?
А у тебя как указано в header'ах и project-файле?

UVV ★★★★★
()
Ответ на: комментарий от UVV

profile TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . QT += sql

# Input FORMS += maindialog.ui SOURCES += main.cpp

anonymous
()
Ответ на: комментарий от UVV

TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . QT += sql

# Input FORMS += maindialog.ui SOURCES += main.cpp

anonymous
()
Ответ на: комментарий от UVV

profile
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
QT += sql

# Input
FORMS += maindialog.ui
SOURCES += main.cpp
-----------------------------------
подключаю
#include <QApplication>
#include <QDialog>
#include <QtSql>
#include <QMessageBox>

anonymous
()

> -system-sqlite
могу предположить, что драйвер sqlite должен браться из системы и программа его не находит, поэтому qt'шные плагины здесь ни при чём.

UVV ★★★★★
()

Не знаю почему, но этот код работает. Может кто-нибудь мне объяснит в чем разница?
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./main.db");
if (!db.open()) {
QMessageBox::critical(// и т.д.
}

anonymous
()
Ответ на: комментарий от anonymous

static QSqlDatabase QSqlDatabase::addDatabase(const QString & dbname)
Это статический метод, который возвращает созданное подключение.
В первом случае ты использовал этот метод, подключение создалось и потерялось, потому как ты его ничему не происвоил.
Все правильно, потому и первый вариант не работает

EraSER
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.