首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未加载QSQLITE驱动程序-放置qt数据库驱动程序插件的位置

未加载QSQLITE驱动程序-放置qt数据库驱动程序插件的位置
EN

Stack Overflow用户
提问于 2011-03-01 14:37:20
回答 5查看 33.6K关注 0票数 18

我使用VS2008 & QT插件来制作我的应用程序。在打包之后,当我运行应用程序时,我得到了错误:

代码语言:javascript
复制
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。但是我还是得到了这个错误。如何解决这个问题。

我的代码::

代码语言:javascript
复制
  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;
EN

回答 5

Stack Overflow用户

发布于 2011-03-04 14:20:47

驱动程序需要放在"sqldrivers“下,而不是放在与可执行文件相同的目录下(它们在运行时加载,Qt在”sqldrivers“中查找它们)。我们安装的一个应用程序的典型结构如下所示:

代码语言:javascript
复制
.:
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
票数 33
EN

Stack Overflow用户

发布于 2014-07-19 10:31:40

函数: addDatabase("QSQLITE");有两个参数,第一个是驱动程序,第二个是连接的名称(作为QString传递)

现在,尝试以下操作:

代码语言:javascript
复制
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");

它对我有效,所以我猜它对你也有效。(假设SQLITE在已安装的驱动程序中)

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

代码语言:javascript
复制
qDebug()  <<  QSqlDatabase::drivers();

祝好运!

Zaher J.G.

票数 3
EN

Stack Overflow用户

发布于 2018-07-31 07:04:13

只需添加具有文件夹生活平台和驱动器的dll文件即可

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5151279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档