关于qt使用sqlist数据库的注意事项

        之前一直使用的是mysql数据库,这次开发中使用到了SQList数据库,因为底层封装不是我写的,是我老大写的,都是关于数据库的接口啥的,我调用就行。就在昨天,程序突然查不到数据了,也没有报错,数据库也有呀,搞了半天,我就进底层封装查看,原来没有做判断,判断这个SQList数据库是否存在。

        SQList数据库和别的数据库不一样,如mysql,它的特性是,没有数据库就自己建立一个数据库,然后连接上去。导致也没有报错啥的,结果查询不到数据。

        SQList数据库就像一个文件一样,所以要得在再打开它之前先看它存不存在或者为不为空,在进行连接。这样子就没有问题了,如下

DBManager::DBManager() : m_sqliteDB(eDbType::SQLite)
{
    QString settingsFileName = QCoreApplication::applicationDirPath() + "/config/WebConfig.ini";
    QSettings settings(settingsFileName, QSettings::IniFormat);
    m_dbType = settings.value("database/dbType", 1).toInt();
    m_hostName = settings.value("database/hostName", "127.0.0.1").toString();
    m_dbName = settings.value("database/dbName", "stms").toString();
    m_userName = settings.value("database/userName", "root").toString();
    m_password = settings.value("database/password", "123456").toString();
    m_port = settings.value("database/port", 3306).toInt();

    //检查程序执行路径下的数据库是否存在
    if(datebaseExists(m_dbName)) {
        // 如果使用sqlite直接返回一个单对象即可,不需要重新生成
        m_sqliteDB.SetDb(m_hostName, m_dbName, m_userName, m_password, m_port);
    }
}

bool AppRunTime::datebaseExists(QString dbName)
{
    SimpleLogLib::writeLog("正在加载站端数据库文件" + dbName, "ValWellElectricTools", __FILE__, __LINE__);

    //判断SQLite数据库文件是否存在,不存在将错误信息写入文件,返回
    if(!QFile::exists(dbName))
    {
        SimpleLogLib::writeLog("站端数据库文件" + dbName + "加载失败,请检查配置文件或者数据库是否存在!!!", "error", __FILE__, __LINE__);
        SimpleLogLib::writeLog("当前路径:" + QDir::currentPath() + ",配置文件dbName路径:" + dbName, "error", __FILE__, __LINE__);
        return false;
    }
    //判断SQLite数据库文件是否为空,不存在将错误信息写入文件,返回
    if(QFileInfo(dbName).size() == 0) {
        SimpleLogLib::writeLog("站端数据库文件" + dbName + "为空,请检查数据库信息!!!", "error", __FILE__, __LINE__);
        return false;
    }
    SimpleLogLib::writeLog("站端数据库文件" + dbName + "加载成功!", "ValWellElectricTools", __FILE__, __LINE__);
    return true;
}

        SQLite更适合取代本地的文件存储。SQLite也适合给每天几十万点击量的网站提供数据支持。像微信就是用的SQLite数据库来存储我们的聊天信息的。

                                                                                                ---------------再此记录一下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值