Драйвер QSQLITE не загружен - где разместить плагины драйвера базы данных qt - PullRequest
17 голосов
/ 01 марта 2011

Я использую плагин VS2008 & QT для создания своего приложения.После создания пакета, когда я запускаю приложение, я получаю ошибку:

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers: 
Database error: QSqlError(-1, "Driver not loaded", "Driver not loaded") 
QSqlError(-1, "Driver not loaded", "Driver not loaded") 

Я добавил qsqlite.dll в свой пакет и также изменил libpath.Но все же я получаю эту ошибку.Как решить эту проблему.

Мой код ::

  QStringList str;
str.append(".");
a.setLibraryPaths(str);
a.addLibraryPath("./sqldrivers/");

//a.addLibraryPath(".");

qDebug()<<"my library path : "<<a.libraryPaths();

QLibrary sqlib("qsqlite4.dll");
sqlib.load();
qDebug()<<"my library loaded"<<sqlib.isLoaded();

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
qDebug()<<"Database error:"<<db.lastError();

db.setDatabaseName("vimukti1234");
qDebug()<< db.lastError();

 db.open();
QSqlQuery query;

Ответы [ 5 ]

31 голосов
/ 04 марта 2011

Драйверы должны быть размещены в «sqldrivers», а не в том же каталоге, что и исполняемый файл (они загружаются во время выполнения, и Qt ищет их в «sqldrivers»). Типичная структура одного из наших установленных приложений выглядит следующим образом:

.:
total 26616
-rwxr-xr-x 1 root root 2245632 Sep 29 03:53 AlvaEditor.exe
-rwxr-xr-x 1 root root 2335232 Sep 29 03:53 QtCore4.dll
-rwxr-xr-x 1 root root 8421376 Sep 29 03:53 QtGui4.dll
-rwxr-xr-x 1 root root  199168 Sep 29 03:53 QtSql4.dll
-rwxr-xr-x 1 root root  306688 Sep 29 03:53 libctemplate.dll
-rwxr-xr-x 1 root root   26624 Sep 29 03:53 qgif4.dll
-rwxr-xr-x 1 root root   28672 Sep 29 03:53 qico4.dll
-rwxr-xr-x 1 root root  200704 Sep 29 03:53 qjpeg4.dll
-rwxr-xr-x 1 root root  222720 Sep 29 03:53 qmng4.dll
-rwxr-xr-x 1 root root  439808 Sep 29 03:53 qsqlite4.dll
-rwxr-xr-x 1 root root   21504 Sep 29 03:53 qsvg4.dll
-rwxr-xr-x 1 root root  287232 Sep 29 03:53 qtiff4.dll
drwxr-xr-x 2 root root    4096 Sep 29 03:53 sqldrivers

./sqldrivers:
total 432
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll
3 голосов
/ 19 июля 2014

Ну, функция: addDatabase ("QSQLITE"); принимает два параметра, первый - это драйвер, а второй - имя вашего соединения (передается как QString)

Теперь попробуйте следующее:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");

Это сработало для меня, так что я думаю, это сработает для вас. (Предполагая, что SQLITE входит в число установленных вами драйверов)

Вы можете проверить SQLITE следующим образом:

qDebug()  <<  QSqlDatabase::drivers();

Удачи!

Захер Дж. Г.

1 голос
/ 31 июля 2018

Просто добавьте DLL-файл, в котором есть папка life platform и driver

просто создайте приложение, используя windeployqt tool

0 голосов
/ 21 июня 2019

Платформа Linux: Создайте свой Qt Source с включенной опцией BR2_PACKAGE_QT5BASE_SQLITE_QT=y в файле .config и скопируйте sqlriver, сгенерированный в выходном пути lib/qt/plugins/sqldrivers/libqsqlite.so, в / usr / lib / qt / plugins / sqldrivers / на целевой плате и запуститеваше приложение.
Также вы можете проверить, где и все ваши двоичные файлы / приложения ищут библиотеки и плагины, используя API "QApplication :: libraryPaths ()"

0 голосов
/ 26 марта 2014

Попробуйте сначала:

qDebug() << QSqlDatabase::drivers();

для проверки доступных драйверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...