没有加载QSQLITE驱动程序 - 在哪里放置qt数据库驱动程序插件

时间:2011-03-01 06:37:20

标签: c++ visual-studio sqlite qt

我正在使用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 个答案:

答案 0 :(得分:31)

驱动程序需要放在“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

答案 1 :(得分:3)

好吧,功能:addDatabase(“QSQLITE”);有两个参数,第一个是驱动程序,第二个是连接的名称,(作为QString传递)

现在,请尝试以下操作:

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

它对我有用,所以我想这对你有用。 (假设SQLITE是您安装的驱动程序之一)

您可以通过以下方式检查SQLITE:

qDebug()  <<  QSqlDatabase::drivers();
祝你好运!

Zaher J.G。

答案 2 :(得分:1)

只需添加具有文件夹寿命平台和驱动器的dll文件

因此只需使用windeployqt工具构建应用

答案 3 :(得分:0)

首先尝试:

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

检查可用的驱动程序。

答案 4 :(得分:0)

Linux平台: 使用BR2_PACKAGE_QT5BASE_SQLITE_QT=y文件中启用的.config选项构建Qt源,并将在输出路径lib/qt/plugins/sqldrivers/libqsqlite.so中生成的sqldriver复制到目标板上的/ usr / lib / qt / plugins / sqldrivers /并运行您的应用程序。
您也可以使用“ QApplication :: libraryPaths()” API来检查二进制文件和应用程序在哪里以及所有二进制文件/应用程序在哪里寻找