这是一个在开发过程中不会出现的问题,但是当你发布程序后,将程序安装在别的机器,在运行时会出现的错误。
错误如下:
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");