我正在我的代码中尝试连接到SQLite数据库:
bool MainWindow::connOpen(){
mydb=QSqlDatabase::addDatabase("QSQLITE");
//qDebug ( ) << QSqlDatabase::drivers();
QString dbpath = "dbname.sqlite";
mydb.setDatabaseName(dbpath);
}
它给出了错误消息:&#34; QSqlDatabase:QSQLITE驱动程序未加载&#34; 以及错误窗口&#34;驱动程序未加载驱动程序未加载&#34;。 QSqlDatabase mydb声明位于MainWindow头文件中。
奇怪的是,这只发生在调试模式下,在发布模式下一切都很好。甚至更奇怪,这曾经是(我认为)自动QT更新之前的工作。我使用的是QTCreator 4.4.1和QT 5.9.2。另外,我检查过,sqlite.dll是在sqldrivers文件夹中,我理解它应该是。但由于某些原因,Qt文件夹被称为QT 5.9.1,与我的实际版本不同,只是这似乎没有任何影响。其他一切都很好。
另外,当我取消注释QSqlDatabase :: drivers();行,调试模式下的输出是(),而在发布模式下我得到(&#34; QSQLITE&#34;,&#34; QMYSQL&#34;,&#34; QMYSQL3&#34;,&#34; QODBC& #34;,&#34; QODBC3&#34;,&#34; QPSQL&#34;,&#34; QPSQL7&#34;)。显然,没有找到司机。
有没有人知道调试和发布之间的差异可能来自哪里?非常感谢!
答案 0 :(得分:1)
总结为答案:
发布构建工作正常,但调试失败是因为在Windows上每个插件实际上有2个文件 - 在这种情况下是qsqlite.dll
和qsqlited.dll
。带有 d 的那个用于调试版本,另一个用于版本构建。
由于缺少调试版本,重新安装Qt是获取丢失文件的唯一方法。
答案 1 :(得分:-1)
就我而言: 所以不起作用:
db = QSqlDatabase::addDatabase("QSQLITE", "MyConnection"); //MyConnection as connection name - Driver not loaded
它有效:
db = QSqlDatabase::addDatabase("QSQLITE");
两个版本都可以在Release中使用。
QT 5.10