• 大小: 6KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-29
  • 语言: 数据库
  • 标签: JasonQt  qt  sql  

资源简介

QSqlDatabase的进一步封装 实现了多线程支持以及更加简单的操作

资源截图

代码片段和文件信息

// Qt lib import
#include 
#include 
#include 

// JasonQt lib import
#include “JasonQt/JasonQt_Database.h“

int main(int argc char *argv[])
{
    QCoreApplication a(argc argv);

    /*
     * 注:关于附加参数
     * 这是可以不写的,如果要写的话,可以参考这个:
     *
     * 单次打开数据库最大时间:也就是最大open的时间,对于某些数据库,长时间open但不使用,不仅会造成资源浪费还会意外断开。在设置了60 * 1000后,且60秒内未进行查询,就自动断开。
     * 多线程支持:简单的说就是高级点的数据库,比如 MySql 写 JasonQt_Database::QueryMultiMode ;低级的,比如 Sqlite ,写 JasonQt_Database::QuerySingleMode 就可以了。
     * 最小等待时间:对于某些数据库,比如Sqlite,密集查询时可能出错,此时可以适当的提升两次查询之间的最小等待时间,比如10ms
     */

    // Sqlite的连接方式                    类型        连接名        Sqlite文件路径      单次打开数据库最大时间                多线程支持           最小等待时间
    JasonQt_Database::Control control({ “QSQLITE“ “TestDB“ “/Users/Jason/test.db“ } { 60 * 1000        JasonQt_Database::QuerySingleMode 10});

    // MySql的连接方式                      类型      连接名        IP        数据库    用户名        密码
//  JasonQt_Database::Control control({ “QMYSQL“ “TestDB“ “localhost“ “JasonDB“ “root“ “YourPassword“ });


    // SqlServer的连接方式                  类型      连接名                                     数据库              数据库名   用户名         密码
//  JasonQt_Database::Control control({ “QODBC“ “TestDB“ “Driver={SQL SERVER};server=iZ23kn6vmgkZ\\TEST;database=test;uid=sa;pwd=YourPassword;“ });

    auto insert = [&]()
    {
        auto query(control.query()); // 这里的query在解引用( -> 或者 * )后返回的是 QSqlQuery ,直接用就可以了,不需要单独打开数据库或者其他的初始化

        query->prepare(“insert into Test1 values(?)“); // 模拟插入操作

        query->addBindValue(rand() % 1280);

        if(!query->exec())
        {
            qDebug() << “Error“ << __LINE__;
        }

        query->clear();

        query->prepare(“insert into Test2 values(NULL ? ?)“);

        query->addBindValue(rand() % 1280);
        QString buf;
        for(int now = 0; now < 50; now++)
        {
            buf.append(‘a‘ + (rand() % 26));
        }
        query->addBindValue(buf);

        if(!query->exec())
        {
            qDebug() << “Error“ << __LINE__;
        }
    };
    auto delete_ = [&]()
    {
        auto query(control.query());

        query->prepare(“delete from Test1 where data = ?“);

        query->addBindValue(rand() % 1280);

        if(!query->exec())
        {
            qDebug() << “Error“ << __LINE__;
        }

        query->clear();

        query->prepare(“delete from Test2 where data1 = ?“);

        query->addBindValue(rand() % 1280);

        if(!query->exec())
        {
            qDebug() << “Error“ << __LINE__;
        }
    };
    auto update = [&]()
    {
        auto query(control.query());

        query->prepare(“update Test1 set data = ? where data = ?“);

        query->addBindValue(rand() % 1280);
        query->addBindValue(rand() % 1280);

        if(!query->exec())
        {
            qDebug() << “Error“ << __LINE__;
        }

        query->clear();

        query->prepare(“update Test2 set data1 = ? data2 = ? where dat

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-04-05 21:25  JasonQt_Database\
     文件        6148  2015-04-05 21:25  JasonQt_Database\.DS_Store
     目录           0  2015-04-05 21:25  JasonQt_Database\JasonQt\
     文件        7789  2015-04-05 21:18  JasonQt_Database\JasonQt\JasonQt_Database.cpp
     文件        3709  2015-04-05 20:59  JasonQt_Database\JasonQt\JasonQt_Database.h
     文件         434  2015-04-05 20:57  JasonQt_Database\JasonQt_Database.pro
     文件        5421  2015-04-05 21:24  JasonQt_Database\main.cpp
     文件        1006  2015-03-17 10:50  JasonQt_Database\数据库(别忘记看这个了).h

评论

共有 条评论