关于QSqlDatabase::addDatabase的一个运行时错误

 

这是一个在开发过程中不会出现的问题,但是当你发布程序后,将程序安装在别的机器,在运行时会出现的错误。
错误如下:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
can not open database!

原因是由于程序中将添加的数据库赋值给了静态的变量。
相关的函数是:
QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String(defaultConnection)) [static]

 

使用中出现了如下的程序结构:

// dbWriter.h

#ifndef DBWRITER_H
#define DBWRITER_H

#include <QObject>
#include <QtSql>

class DbWriter : public QObject
{
    Q_OBJECT
public:
    static QSqlDatabase db;
};

#endif

// dbWriter.cpp

#include "dbWriter.h"

QSqlDatabase DbWriter::db = QSqlDatabase::addDatabase("QSQLITE", "db_w");

// use.cpp
DbWriter::db.setDatabaseName("./xxx.db");


 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
这个错误通常是因为没有正确安装或加载MySQL驱动程序所导致的。要解决这个问题,可以尝试以下几个步骤: 1. 确保已经正确安装了MySQL数据库和相应的驱动程序。你可以在Qt的文档中查找"Qt SQL Drivers"来获取安装MySQL驱动程序的详细说明。 2. 确保已经将MySQL驱动程序添加到Qt的插件目录中。在Qt的插件目录中,应该有一个名为"sqldrivers"的目录,其中应该包含一个名为"qsqlmysql.dll"或"libqsqlmysql.so"的文件。如果这个文件不存在,你可以尝试重新安装Qt或手动将MySQL驱动程序添加到插件目录中。 3. 如果你正在使用动态链接库版本的MySQL驱动程序,则需要确保在运行时可以找到MySQL动态链接库。你可以将MySQL动态链接库所在的目录添加到系统的PATH环境变量中,或者将MySQL动态链接库复制到Qt应用程序所在的目录中。 4. 最后,你需要确保在创建QSqlDatabase对象之前,已经正确加载了MySQL驱动程序。你可以在main函数中添加以下代码来加载MySQL驱动程序: ``` #include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlError> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // Load MySQL driver QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); if (!db.isValid()) { qWarning() << "Invalid database driver!"; return 1; } // Set database connection parameters db.setHostName("localhost"); db.setDatabaseName("mydatabase"); db.setUserName("myusername"); db.setPassword("mypassword"); // Open database if (!db.open()) { qWarning() << "Failed to connect to database:" << db.lastError().text(); return 1; } // Your code here... return app.exec(); } ``` 这将确保在创建QSqlDatabase对象之前,已经正确加载了MySQL驱动程序。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值