正如标题所说,我已经有好几天了。我的程序在QtCreator的调试模式下运行良好,但是一旦我选择了发布模式,我就得到sql驱动程序没有加载的问题(我只在Windows 10上运行它)。我相信我的.pro文件写得正确(QT + = sql写的)。
我尝试过大多数事情:
正如我所说,问题只发生在部署中,所以我想知道是否应该添加到我的.pro文件中。 我的Windows操作系统上没有安装任何sql程序。如果这是我认为的问题,我想知道如何强制我的程序使用sqldrivers子文件夹中提供的插件。
错误:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
QSqlQuery::exec: database not open
编辑:我设法解决了这个问题。问题来自我没想到的事情。我正在使用全局变量,其中一个是我的数据库,我通过再次读取错误来实现它,因为它似乎是在main.cpp的第一行(在#include之前)加载数据库。所以现在我每次使用它时都会使用打开和关闭数据库。有什么方法可以声明一个全局数据库(让它一直保持打开状态)?我正在非常密集地使用它。
答案 0 :(得分:0)
是的,您可以打开数据库一次,然后只使用QSqlDatabase
类的静态公共方法:
QSqlDatabase my_db = QSqlDatabase::addDatabase("QSQLITE");
my_db.setDatabaseName("my_db_name.sqlite");
if(my_db.open())
{
my_db.exec("create table person (id int primary key, "
"firstname varchar(20), lastname varchar(20))");
}
else
{
qDebug() << my_db.lastError().text();
}
然后在另一个地方:
QSqlDatabase db = QSqlDatabase::database();
if(db.isOpen())
{
qDebug() << "Wow";
db.exec("insert into person values(101, 'Danny', 'Young')");
}
请参阅QSqlDatabase::addDatabase()
,并根据需要使用参数connectionName
。