• 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

  • 相关阅读:
    神经网络 梯度与神经元参数w、b关系;梯度与导数关系
    数字孪生与智慧城市:共筑未来城市的科技基石
    java 查看内存方式
    C++实现集群聊天服务器
    错误方法修改用户名后,开机提示无法登录到你的账户的正确解决方法
    Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误
    Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide
    Spark 之 HistoryServer and FsHistoryProvider
    RabbitMQ手把手教程(一)概念
    C#中解决PC端程序多开的问题
  • 原文地址:https://blog.csdn.net/Black_Friend/article/details/134527720