广告
返回顶部
首页 > 资讯 > 精选 >Qt数据库中如何实现通用数据库请求
  • 469
分享到

Qt数据库中如何实现通用数据库请求

2023-06-29 14:06:03 469人浏览 八月长安
摘要

小编给大家分享一下Qt数据库中如何实现通用数据库请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言数据库请求是在数据库采集的基础上,换成Http请求的形式

小编给大家分享一下Qt数据库中如何实现通用数据库请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、前言

数据库请求是在数据库采集的基础上,换成Http请求的形式来获取数据,这样就脱离了数据库组件,而采用的通用的http请求的形式从数据库拿数据库,这个通用性就非常广泛了,比如对方用java采集到设备的数据存入数据库,另外一个区域是用的C#采集的数据入库,然后统一规则统一规范约定一个请求机制,定时器或者线程取执行请求,拿到的JSON数据,挨个取出来结果,数组集合的方式发信号出去。

之前写过的可视化大屏电子看板程序,采用的也是http请求数据库采集的方式拿数据展示,需要多方协作,至于数据库中的数据是谁放的,和大屏程序本身无关,对应既可以是请求的形式存入的数据,也可以是直接数据库写入的方式,即可以是java也可以是c#,大屏UI展示只管取出数据按照规则展示即可,要多漂亮就多漂亮,qss和painter在手,心中有坐标,万物皆painter。

二、功能特点

同时支持多种数据库比如odbc、sqlite、mysqlpostgresql、sqlserver、oracle、人大金仓等。

一个数据库类即可管理本地数据库通信,也支持远程数据库通信等。

数据库线程支持执行各种sql语句,包括单条和批量。

组件中的所有类打印信息、错误信息、执行结果都信号发出去。

集成数据库通用翻页类(负责具体处理逻辑),搭配分页导航控件(负责外观),形成超级牛逼的翻页控件。

集成数据库自动清理类,设定最大记录数后台自动清理早期数据。

集成自定义委托类,支持复选框、文本框、下拉框、日期框、微调框、进度条等。

同时支持Qt4-Qt6,亲测Qt4.6到Qt6.3任意版本,任意系统和编译器。

本组件无故障 360天7乘24小时 运行在至少上万个现场,商业级别品质保证。

每个类都对应完整详细的使用示例,注释详细,非常适合阅读学习

可以作为独立的程序运行,比如自动清理早期数据,同步数据到云端。

全部线程处理,不卡界面,自动重连数据库。

普通测试情况,sqlite数据库,数据库发生器每秒钟插入1000条记录约0.003秒钟,同时自动清理数据类每秒钟删除1000条记录约0.13秒,不同线程互不干扰。

三、体验地址

体验地址:https://pan.baidu.com/s/15ZKAlptW-rDcNq8zlzdYLg  提取码:uyes 文件名:bin_dbtool.zip

国内站点:https://gitee.com/feiyangqingyun

国际站点:https://GitHub.com/feiyangqingyun

四、效果图

Qt数据库中如何实现通用数据库请求

五、相关代码

#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()));    //实例化网络请求采集数据通信类    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)));    //设置参数    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 << "位号" << "当前值" << "状态" << "时间";    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("用时( %1 秒)  标识( %2 )  数据( %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() == "启动服务") {        on_btnDo_clicked();        timer->start();        ui->btnStart->setText("停止服务");    } else {        timer->stop();        ui->btnStart->setText("启动服务");    }}void frmDbHttp::on_btnClear_clicked(){    QUIHelper::appendMsg(ui->txtMain, 0, "", maxCount, currentCount);}

以上是“Qt数据库中如何实现通用数据库请求”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Qt数据库中如何实现通用数据库请求

本文链接: https://www.lsjlt.com/news/325361.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Qt数据库中如何实现通用数据库请求
    小编给大家分享一下Qt数据库中如何实现通用数据库请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言数据库请求是在数据库采集的基础上,换成http请求的形式...
    99+
    2023-06-29
  • Qt数据库应用之实现通用数据库请求
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据库请求是在数据库采集的基础上,换成http请求的形式来获取数据,这样就脱离了数据库组件,而采用的通用的http...
    99+
    2022-11-13
  • Qt数据库应用中如何实现通用数据库采集
    小编给大家分享一下Qt数据库应用中如何实现通用数据库采集,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言数据库采集对应的就是上一篇文章的数据库同步,数据库同...
    99+
    2023-06-29
  • Qt数据库如何实现通用数据生成器
    这篇文章将为大家详细讲解有关Qt数据库如何实现通用数据生成器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言有两种应用场景需要用到数据生成器,一种是需要测试数据库性能,比如在100万条和1000万条...
    99+
    2023-06-29
  • Qt数据库应用之实现通用数据库采集
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据库采集对应的就是上一篇文章的数据库同步,数据库同步到云端数据库以后,app、网页、小程序啥的要数据的话,可以通...
    99+
    2022-11-13
  • Qt数据库应用之实现通用数据库清理
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 很多项目如果需要存储很多日志记录比如运行日志,时间长了记录数量非常多,数据库体积不断增大,对应数据库表的增删改查的...
    99+
    2022-11-13
  • Qt数据库应用之实现通用数据库分页
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表、用户信息表这种很少几条几十条数据...
    99+
    2022-11-13
  • Qt数据库应用之通用数据库同步
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据库同步的主要功能是将本地的数据库记录同步到远程的数据库,其中数据库类型不限,比如本地是sqlite数据库,远程...
    99+
    2022-11-13
  • Qt数据库应用之实现通用数据生成器
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 有两种应用场景需要用到数据生成器,一种是需要测试数据库性能,比如在100万条和1000万条记录的时候对比查询或更新...
    99+
    2022-11-13
  • Qt怎么实现通用数据库同步
    这篇文章主要介绍“Qt怎么实现通用数据库同步”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Qt怎么实现通用数据库同步”文章能帮助大家解决问题。一、前言数据库同步的主要功能是将本地的数据库记录同步到远...
    99+
    2023-06-29
  • PHP Ajax如何请求MySQL数据库
    PHP Ajax如何请求MySQL数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库:前台页面:choseForm.p...
    99+
    2022-10-18
  • Qt数据库应用之实现数据分组导出
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据分组导出和打印这个需求并不是近期的需求,而是之前做温湿度监控系统的时候提的需求,当然也有几个系统用到了,比如啤...
    99+
    2022-11-13
  • Qt数据库应用之实现数据图文混排
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 除了能够打印基本的文字信息数据到pdf和纸张,越来越多的应用需求还要求能够导出图片,并且要支持图文混排,相当于do...
    99+
    2022-11-13
  • Qt数据库应用之实现数据打印到纸张
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据能够打印到pdf文件,当然可以打印到纸张,而且使用qprinter默认就是打印到纸张的,上一篇文章写得功能是打...
    99+
    2022-11-13
  • Qt怎么连接数据库并实现数据库增删改查
    这篇文章主要讲解了“Qt怎么连接数据库并实现数据库增删改查”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt怎么连接数据库并实现数据库增删改查”吧!1.连接数据库先来看下连接数据库的效果图。...
    99+
    2023-07-06
  • Qt数据库应用中如何将数据打印到pdf
    这篇文章的内容主要围绕Qt数据库应用中如何将数据打印到pdf进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!一、前言自从数据可以导出到xls,又有客户...
    99+
    2023-06-26
  • Jmeter基于JDBC请求实现MySQL数据库测试
    理论知识部分: 一、简单总结几点数据库测试点: 检查接口返回的数据是否与预期一致 传递数据类型错误时能否处理,比如数据类型要求是整数,传递小数时能否处理 接口参数的边界值 接口处理数据的时间 接口的安全性 二、Jem...
    99+
    2022-05-19
    Jmeter JDBC请求 MySQL 数据库 测试
  • Qt实现编辑数据库数据的方法详解
    前面几章我们介绍了如何对数据库进行操作以及如何使用图形界面展示数据库数据。本章我们将介绍如何对数据库的数据进行编辑。当然,我们可以选择直接使用 SQL 语句进行更新,这一点同前面所说...
    99+
    2023-02-03
    Qt编辑数据库数据 Qt编辑数据库 Qt 数据库
  • Vuejs如何通过Axios请求数据
    目录通过Axios请求数据安装Axios工具封装Axios工具配置Axios工具使用Axios工具Vue请求数据(Axios)什么是Axios引入使用方法通过Axios请求数据 我们...
    99+
    2022-11-13
  • qt如何连接数据库并添加数据
    在Qt中连接数据库和添加数据可以按照以下步骤进行操作:1. 首先,你需要在Qt项目中添加数据库驱动程序。Qt支持多种数据库,例如My...
    99+
    2023-08-09
    qt 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作