最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫請求

 更新時(shí)間:2022年03月22日 09:55:10   作者:feiyangqingyun  
這篇文章主要為大家介紹了Qt中是如何實(shí)現(xiàn)通用數(shù)據(jù)庫請求的,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt有一定幫助,感興趣的小伙伴可以了解一下

一、前言

數(shù)據(jù)庫請求是在數(shù)據(jù)庫采集的基礎(chǔ)上,換成http請求的形式來獲取數(shù)據(jù),這樣就脫離了數(shù)據(jù)庫組件,而采用的通用的http請求的形式從數(shù)據(jù)庫拿數(shù)據(jù)庫,這個(gè)通用性就非常廣泛了,比如對方用java采集到設(shè)備的數(shù)據(jù)存入數(shù)據(jù)庫,另外一個(gè)區(qū)域是用的c#采集的數(shù)據(jù)入庫,然后統(tǒng)一規(guī)則統(tǒng)一規(guī)范約定一個(gè)請求機(jī)制,定時(shí)器或者線程取執(zhí)行請求,拿到的json數(shù)據(jù),挨個(gè)取出來結(jié)果,數(shù)組集合的方式發(fā)信號出去。

之前寫過的可視化大屏電子看板程序,采用的也是http請求數(shù)據(jù)庫采集的方式拿數(shù)據(jù)展示,需要多方協(xié)作,至于數(shù)據(jù)庫中的數(shù)據(jù)是誰放的,和大屏程序本身無關(guān),對應(yīng)既可以是請求的形式存入的數(shù)據(jù),也可以是直接數(shù)據(jù)庫寫入的方式,即可以是java也可以是c#,大屏UI展示只管取出數(shù)據(jù)按照規(guī)則展示即可,要多漂亮就多漂亮,qss和painter在手,心中有坐標(biāo),萬物皆painter。

關(guān)于Qt數(shù)據(jù)庫相關(guān)開發(fā)的一些經(jīng)驗(yàn)總結(jié)

二、功能特點(diǎn)

同時(shí)支持多種數(shù)據(jù)庫比如odbc、sqlite、mysql、postgresql、sqlserver、oracle、人大金倉等。

一個(gè)數(shù)據(jù)庫類即可管理本地?cái)?shù)據(jù)庫通信,也支持遠(yuǎn)程數(shù)據(jù)庫通信等。

數(shù)據(jù)庫線程支持執(zhí)行各種sql語句,包括單條和批量。

組件中的所有類打印信息、錯(cuò)誤信息、執(zhí)行結(jié)果都信號發(fā)出去。

集成數(shù)據(jù)庫通用翻頁類(負(fù)責(zé)具體處理邏輯),搭配分頁導(dǎo)航控件(負(fù)責(zé)外觀),形成超級牛逼的翻頁控件。

集成數(shù)據(jù)庫自動清理類,設(shè)定最大記錄數(shù)后臺自動清理早期數(shù)據(jù)。

集成自定義委托類,支持復(fù)選框、文本框、下拉框、日期框、微調(diào)框、進(jìn)度條等。

同時(shí)支持Qt4-Qt6,親測Qt4.6到Qt6.3任意版本,任意系統(tǒng)和編譯器。

本組件無故障 360天7乘24小時(shí) 運(yùn)行在至少上萬個(gè)現(xiàn)場,商業(yè)級別品質(zhì)保證。

每個(gè)類都對應(yīng)完整詳細(xì)的使用示例,注釋詳細(xì),非常適合閱讀學(xué)習(xí)。

可以作為獨(dú)立的程序運(yùn)行,比如自動清理早期數(shù)據(jù),同步數(shù)據(jù)到云端。

全部線程處理,不卡界面,自動重連數(shù)據(jù)庫。

普通測試情況,sqlite數(shù)據(jù)庫,數(shù)據(jù)庫發(fā)生器每秒鐘插入1000條記錄約0.003秒鐘,同時(shí)自動清理數(shù)據(jù)類每秒鐘刪除1000條記錄約0.13秒,不同線程互不干擾。

三、體驗(yàn)地址

體驗(yàn)地址:https://pan.baidu.com/s/15ZKAlptW-rDcNq8zlzdYLg  提取碼:uyes 文件名:bin_dbtool.zip

國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun

國際站點(diǎn):https://github.com/feiyangqingyun

四、效果圖

五、相關(guān)代碼

#include "frmdbhttp.h"
#include "ui_frmdbhttp.h"
#include "quihelper.h"
#include "dbhelper.h"
#include "dbhttpthread.h"

frmDbHttp::frmDbHttp(QWidget *parent) : QWidget(parent), ui(new Ui::frmDbHttp)
{
    ui->setupUi(this);
    this->initForm();
    this->initConfig();
    this->initTable();
}

frmDbHttp::~frmDbHttp()
{
    delete ui;
}

void frmDbHttp::showEvent(QShowEvent *)
{
    static bool isShow = false;
    if (!isShow) {
        isShow = true;
        QTimer::singleShot(100, this, SLOT(on_btnStart_clicked()));
    }
}

void frmDbHttp::initForm()
{
    ui->frame->setFixedWidth(AppConfig::RightWidth);
    QUIHelper::initTableView(ui->tableWidget);

    maxCount = 100;
    currentCount = 0;

    timer = new QTimer(this);
    timer->setInterval(1000);
    connect(timer, SIGNAL(timeout()), this, SLOT(on_btnDo_clicked()));

    //實(shí)例化網(wǎng)絡(luò)請求采集數(shù)據(jù)通信類
    dbHttp = new DbHttpThread(this);
    connect(dbHttp, SIGNAL(debug(QString)), this, SLOT(debug(QString)));
    connect(dbHttp, SIGNAL(error(QString)), this, SLOT(error(QString)));
    connect(dbHttp, SIGNAL(receiveData(QString, QStringList, int)), this, SLOT(receiveData(QString, QStringList, int)));

    //設(shè)置參數(shù)
    dbHttp->setUrl("http://127.0.0.1:6000");
    QMap<QString, QString> tables;
    tables.insert("NodeData", "PositionID,NodeValue,NodeStatus,SaveTime");
    dbHttp->setTables(tables);
}

void frmDbHttp::initConfig()
{

}

void frmDbHttp::saveConfig()
{

}

void frmDbHttp::initTable()
{
    QStringList columnNames;
    columnNames << "位號" << "當(dāng)前值" << "狀態(tài)" << "時(shí)間";
    QList<int> columnWidths;
    columnWidths << 160 << 100 << 100 << 220;

    columnCount = columnNames.count();
    ui->tableWidget->setColumnCount(columnCount);
    ui->tableWidget->setHorizontalHeaderLabels(columnNames);
    for (int i = 0; i < columnCount; i++) {
        ui->tableWidget->setColumnWidth(i, columnWidths.at(i));
    }
}

void frmDbHttp::debug(const QString &msg)
{
    QUIHelper::appendMsg(ui->txtMain, 0, msg, maxCount, currentCount);
}

void frmDbHttp::error(const QString &msg)
{
    QUIHelper::appendMsg(ui->txtMain, 1, msg, maxCount, currentCount);
}

void frmDbHttp::receiveData(const QString &tag, const QStringList &data, int msec)
{
    QString msg = QString("用時(shí)( %1 秒)  標(biāo)識( %2 )  數(shù)據(jù)( %3 )").arg(QString::number((double)msec / 1000, 'f', 3)).arg(tag).arg(data.join("|"));
    QUIHelper::appendMsg(ui->txtMain, 3, msg, maxCount, currentCount);

    //顯示到表格中
    int count = data.count();
    ui->tableWidget->setRowCount(count / columnCount);
    int row = -1;
    for (int i = 0; i < count; i = i + columnCount) {
        row++;
        for (int j = 0; j < columnCount; ++j) {
            ui->tableWidget->setItem(row, j, new QTableWidgetItem(data.at(i + j)));
        }
    }
}

void frmDbHttp::on_btnDo_clicked()
{
    dbHttp->select("NodeData", "PositionID,NodeValue,NodeStatus,SaveTime");
}

void frmDbHttp::on_btnStart_clicked()
{
    if (ui->btnStart->text() == "啟動服務(wù)") {
        on_btnDo_clicked();
        timer->start();
        ui->btnStart->setText("停止服務(wù)");
    } else {
        timer->stop();
        ui->btnStart->setText("啟動服務(wù)");
    }
}

void frmDbHttp::on_btnClear_clicked()
{
    QUIHelper::appendMsg(ui->txtMain, 0, "", maxCount, currentCount);
}

以上就是Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫請求的詳細(xì)內(nèi)容,更多關(guān)于Qt數(shù)據(jù)庫請求的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 總結(jié)IOS中nil、Nil、NULL和NSNull區(qū)別

    總結(jié)IOS中nil、Nil、NULL和NSNull區(qū)別

    相信有不少朋友想知道,在 Objective-C 中 nil 和 Nil 以及 NULL 的區(qū)別。最重要的是,在面試中還有不少朋友常會被問到。現(xiàn)在小編在這里統(tǒng)一詳細(xì)說明。
    2016-08-08
  • C++如何有效地利用命名空間

    C++如何有效地利用命名空間

    談到C++編程中的模塊化和組織性時(shí),命名空間(Namespace)是一個(gè)重要的概念,所以本文主要來和大家聊聊C++命名空間的概念、用法以及如何有效地利用它來管理代碼,有需要的可以參考下
    2023-09-09
  • C語言循環(huán)隊(duì)列的表示與實(shí)現(xiàn)實(shí)例詳解

    C語言循環(huán)隊(duì)列的表示與實(shí)現(xiàn)實(shí)例詳解

    這篇文章主要介紹了C語言循環(huán)隊(duì)列的表示與實(shí)現(xiàn),對于數(shù)據(jù)結(jié)構(gòu)與算法的研究很有幫助,需要的朋友可以參考下
    2014-07-07
  • C語言實(shí)現(xiàn)哈希搜索算法及原理詳解

    C語言實(shí)現(xiàn)哈希搜索算法及原理詳解

    本文主要介紹了C語言實(shí)現(xiàn)哈希搜索算法及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++實(shí)現(xiàn)雙向起泡排序算法

    C++實(shí)現(xiàn)雙向起泡排序算法

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)雙向起泡排序算法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理

    VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理

    這篇文章主要介紹了VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理,包括了dll文件的原理與具體實(shí)現(xiàn)過程,對于深入掌握VC程序設(shè)計(jì)具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C語言基礎(chǔ)之格式化輸出控制長度

    C語言基礎(chǔ)之格式化輸出控制長度

    這篇文章主要介紹了C語言基礎(chǔ)之格式化輸出控制長度的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • C++實(shí)現(xiàn)查殼程序代碼實(shí)例

    C++實(shí)現(xiàn)查殼程序代碼實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)查殼程序代碼實(shí)例,有比較詳細(xì)的注釋,包含了對原理的說明,有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 使用Qt框架制作一個(gè)表白程序

    使用Qt框架制作一個(gè)表白程序

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt框架制作一個(gè)表白程序,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-01-01
  • C++中的atoi?函數(shù)簡介

    C++中的atoi?函數(shù)簡介

    這篇文章主要給大家分享的是C++中的atoi?函數(shù)的簡單介紹,在?stdlib.h?中?atoi?函數(shù),可用于將?char?字符串轉(zhuǎn)為?int?整數(shù)類型,集體的語法操作請參考下面文章的詳細(xì)內(nèi)容
    2021-11-11

最新評論

广元市| 双江| 塔河县| 平泉县| 柳州市| 札达县| 长治市| 韶山市| 鹤峰县| 滁州市| 资兴市| 安远县| 屯门区| 金阳县| 嘉定区| 英吉沙县| 临西县| 澄江县| 南康市| 田林县| 林州市| 通江县| 阳城县| 武陟县| 马龙县| 页游| 辽宁省| 布尔津县| 颍上县| 吉林市| 上林县| 绥化市| 苍山县| 安义县| 咸丰县| 牡丹江市| 绥棱县| 瓦房店市| 潜山县| 汝南县| 海晏县|