邏輯流程:
1. 判斷是否存在資料庫檔案,不存在則創建;
2. 判斷是否存在對應的table,不存在則創建;
代碼如下:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#define FILE_NAME "ThreeKindoms.db"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
#if 1
//判斷檔案是否存在
QFileInfo fileInfo(QString(QCoreApplication::applicationDirPath() + "/" + FILE_NAME));
if (!fileInfo.exists()) {
//創建檔案
this->createDBFile();
}
QString shuTable = "ShuKingdom";
this->createTable(shuTable);
#else
this->createDBFile();
#endif
}
Widget::~Widget()
{
delete ui;
}
void Widget::createDBFile()
{
m_database = QSqlDatabase::addDatabase("QSQLITE", "ThreeKindoms");
m_database.setDatabaseName(QString(QCoreApplication::applicationDirPath() + "/" + FILE_NAME));
if (!m_database.open())
qDebug() << "Open database file failed.";
else
qDebug() << "Open database file success.";
}
void Widget::createTable(QString &tableName)
{
if (!m_database.isOpen()) {
if (!m_database.open())
qDebug() << "ERROR:" << m_database.lastError();
}
……
}
問題:
當第一次編譯運行時,控制臺的列印為
Open database file success.
Create "ShuKingdom" success.
此時,再一次運行專案,則會出現如下列印提示:
ERROR: QSqlError("", "Driver not loaded", "Driver not loaded")請問各位大神,為什么編譯運行過一次后,再運行就會報錯QSqlError的錯誤;而且這個錯誤是在createTable函式中執行判斷m_database是否打開,未打開則執行open,這里為什么會出錯?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/246324.html
標籤:Qt
