Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QSQLITE driver not loaded - where to put qt database driver plugins

I am using VS2008 & QT plugin to make my application. After making package when I am running the application I am getting error :

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") 

I have added the qsqlite.dll to my package & also changed the libpath. But still I am getting this error. How to solve this.

My Code::

  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;
like image 307
amrit_neo Avatar asked Mar 01 '11 06:03

amrit_neo


5 Answers

The drivers need to be placed under "sqldrivers", not in the same directory as the executable (they are loaded on runtime, and Qt looks for them in "sqldrivers"). A typical structure of one of our installed applications is like this:

.:
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
like image 108
qdot Avatar answered Nov 17 '22 19:11

qdot


Well, the function: addDatabase("QSQLITE"); takes two parameters, the first is the driver and the second is the name of your connection, (passed as a QString)

Now, try the following:

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

It worked for me, so I guess it'll work for you. (Assuming SQLITE is among your installed drivers)

You can check for SQLITE by the following:

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

Good luck!

Zaher J.G.

like image 44
Zaher Avatar answered Nov 17 '22 19:11

Zaher


Just Add dll file which have folder life platform and drivesr

so simply build app using windeployqt tool

like image 38
Dnyaneshwar Avatar answered Nov 17 '22 19:11

Dnyaneshwar


Linux platform: Build your Qt Source with the BR2_PACKAGE_QT5BASE_SQLITE_QT=y option enabled in .config file, and copy sqldrivers generated in output path lib/qt/plugins/sqldrivers/libqsqlite.so to /usr/lib/qt/plugins/sqldrivers/ on Target board and run your application.
Also you can Check where and all your binary/application looks for libraries and plugins using "QApplication::libraryPaths()" API

like image 41
Rukmananda Reddy Avatar answered Nov 17 '22 18:11

Rukmananda Reddy


I got the same error

QSqlDatabase: SQLite driver not loaded QSqlDatabase: available drivers:

SQLite driver are in QT(install_dir)>6.1.3>mingw81_64>plugins>sqldrivers>qsqlite.dll

Dont know why but after this it worked.

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");
like image 1
eziobit Avatar answered Nov 17 '22 18:11

eziobit