“QSqlDatabase:QSQLITE 驱动程序未加载”错误仅在调试模式下

问题描述 投票:0回答:2

我正在尝试在我的代码中连接到 SQLite 数据库:

bool MainWindow::connOpen(){

mydb=QSqlDatabase::addDatabase("QSQLITE");

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

QString dbpath = "dbname.sqlite";
mydb.setDatabaseName(dbpath);
}

这给了我错误消息:

QSqlDatabase:QSQLITE 驱动程序未加载

以及错误窗口:

驱动程序未加载 驱动程序未加载

QSqlDatabase mydb
声明位于
MainWindow
头文件中。

奇怪的是,这只发生在 Debug 模式下,在 Release 模式下,一切正常。更奇怪的是,这在(我认为)自动 Qt 更新之前曾经有效。

我正在使用:

  • Qt 创建者 4.4.1
  • Qt 5.9.2.

另外,我检查了 sqlite.dll 是否在 sqldrivers 文件夹中,我认为它应该在其中。但由于某种原因Qt文件夹被称为Qt 5.9.1,与我的实际版本不同,只有这个似乎没有任何效果。其他一切都很好。

此外,当我取消注释

QSqlDatabase::drivers();
行时,调试模式下的输出为:

()

在发布模式下,我得到:

(“QSQLITE”、“QMYSQL”、“QMYSQL3”、“QODBC”、“QODBC3”、“QPSQL”、“QPSQL7”)

显然,没有找到驱动程序。

调试和发布之间的差异来自哪里?

c++ sqlite qt qtsql qsqldatabase
2个回答
1
投票

发布版本可以工作,但调试失败的事实是因为在 Windows 上,每个插件实际上有 2 个文件 - 在本例中为

qsqlite.dll
qsqlited.dll
。带有 d 的用于调试版本,另一个用于发布版本。

由于缺少调试变体,重新安装 Qt 是找回丢失文件的唯一方法。


-1
投票

就我而言: 所以不起作用:

db = QSqlDatabase::addDatabase("QSQLITE", "MyConnection"); //MyConnection as connection name - Driver not loaded

并且有效:

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

两个版本都可以在 Release 中使用。

QT 5.10

© www.soinside.com 2019 - 2024. All rights reserved.