• SQLite库使用小结


    背景:

    刚开始,上学的时候,一直使用的是SQLSever数据库,后来,工作后,发现MySql更简单好用,针对于高并发的情况下,我不需要处理复杂的并发情况。

    但是,最近,出了点小状况,我们在使用数据库的时候,厂家告诉我们说自己的硬盘空间没有那么大,让我们想办法,后来,我们思考,就找到了SQLite数据库(轻量级数据库,但是不支持高并发,单线程不支持同时读写(不能同时读写))

    环境:

    本人使用的Win10,QT C++开发

    正文:

    SQLite 目前来说,我使用的场景比较简单,没有加密设置密码。

    使用:

    创建表:

    1. QSqlQuery sql_query;
    2. QString creat_sql = "create table tableName(id int primary key,index int)";
    3. sql_query.prepare(creat_sql);
    4. if(sql_query.exec())
    5. {
    6. qDebug() << "创建成功";
    7. }
    8. else
    9. {
    10. qDebug() << sql_query.lastError();
    11. }

    初始化:

    1. QSqlDatabase m_sqlDbUpdate;
    2. m_sqlDbUpdate = QSqlDatabase::addDatabase("QSQLITE", "update111");
    3. m_sqlDbUpdate.setDatabaseName(db_path + "/MyDB.db");
    4. //m_sqlDb.setConnectOptions("QSQLITE_OPEN_READWRITE");/* | QSQLITE_OPEN_CREATE*/ //没有表格的时候就创建
    5. open_status = m_sqlDbUpdate.open();
    6. if (open_status)
    7. {
    8. qDebug() << QStringLiteral("打开成功");
    9. }
    10. else
    11. {
    12. //打开失败
    13. qDebug() << m_sqlDbUpdate.lastError();
    14. }

    注意:

    这里有一点要注意,使用的MyDB要放到运行目录下。

    查询:

    1. QMutex* m_sqliteMutex;
    2. QMutexLocker sqlDbLocker(m_sqliteMutex);
    3. QSqlQuery sql_query(m_sqlDb);
    4. QString inputStr = "select * from tableName"
    5. bool query_status = sql_query.exec(inputStr);
    6. if (query_status)
    7. {
    8. qDebug() << "查询成功";
    9. }
    10. else
    11. {
    12. qDebug() << query_status.lastError();
    13. }

    注意:

    这里的查询之前一定要加锁,就是这个 m_sqliteMutex,不论你查询还是写入的时候,一定要加锁。(多线程访问的时候,这里会有冲突)。

    更新:

    1. QMutex* m_sqliteMutex;
    2. QMutexLocker sqlDbLocker(m_sqliteMutex);
    3. QSqlQuery sql_query(m_sqlDb);
    4. QString inputStr = "update tableName set id=0 where index=10"
    5. bool query_status = sql_query.exec(inputStr);
    6. if (query_status)
    7. {
    8. qDebug() << "更新成功";
    9. }
    10. else
    11. {
    12. qDebug() << query_status.lastError();
    13. }

    注意:

            同上

    其他的使用一般都遵循SQL语法。

    加油EveryOne

  • 相关阅读:
    深入React源码揭开渲染更新流程的面纱
    文件操作板子
    archlinux的开源与自由定制
    【Tensorboard】工具使用细节记录,实现训练数据保存及可视化
    Dubbo
    分库分表---理论
    输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
    2022/08/26 day11:高级数据类型
    TikTok | 营销人必看 最接地气的TikTok视频营销策略到此
    仿真调试stm32汇编代码
  • 原文地址:https://blog.csdn.net/Black_Friend/article/details/134527720