QT表格显示MYSQL数据库源码分析(七)

一. 连接MySQL数据库

首先,创建了一个QSqlDatabase对象,并设置数据库类型为"QMYSQL"。然后,它设置了数据库的主机名,端口号,数据库名,用户名和密码。最后,尝试打开数据库连接,并根据连接是否成功输出相应的信息。如果连接失败就会弹出警告框并输出错误信息

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("47.116.118.86");      //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)db.setPort(3306);                 //连接数据库端口号,与设置一致db.setDatabaseName("qtsql");      //连接数据库名,与设置一致db.setUserName("qt");          //数据库用户名,与设置一致db.setPassword("zhongkeruihe");    //数据库密码,与设置一致bool ok = db.open();if (ok){// QMessageBox::information(this, "infor", "success");qDebug()<<"success";}else {QMessageBox::information(this, "警告!", "DataBase Open Failed,Check whether there is a database or whether the parameters are correct!!!");qDebug()<<"error open database because"<<db.lastError().text();//ui->label->setText(db.lastError().text());}

二. 查询表中数据并在tableView中显示

定义一个成员函数,属于一个名为database的类,这个函数的作用是从数据库中查询所有的数据,并将结果显示在一个名为tableView的表格视图上。具体步骤是:

1. 创建一个QSqlQueryModel对象,命名为tableModel。QSqlQueryModel是Qt框架中的一个模型类,用于处理数据库查询结果

2. 定义一个字符串strSelectData,内容是SQL查询语句"select * from qtdata"。这条语句表示从名为qtdata的表中选择所有列的数据

3. 使用tableModel->setQuery(strSelectData)方法,将查询语句设置到tableModel对象中

4. 调用ui->tableView->setModel(tableModel)方法,将tableModel设置为tableView的模型。这样,tableView就会显示tableModel中的查询结果。

//查询所有并放入表中
SelectAllPushTableData();void database::SelectAllPushTableData(){tableModel = new QSqlQueryModel;//定义一个数据库模型,指定父对象QString strSelectData = "select * from qtdata";tableModel->setQuery(strSelectData);ui->tableView->setModel(tableModel);
}

三. 定义多个槽函数

定义多个按钮对应的槽函数,比如更新数据,插入数据和删除数据等。

bool database::clearDBTable()

这个函数作用是清除数据库表中的数据,并且按钮按下后,会弹出弹框,提醒是否确认选择

void database::SelectData()

在设定的时间范围内查找这一范围内的表中的数据

void database::on_select_val_bt_clicked()

在两个下拉框值的范围内搜索表中在这一范围内的数据,并且在tableview中显示

#include "database.h"
#include "ui_database.h"#include <QMessageBox>
#include <QDebug>
#include <QSqlError>database::database(QWidget *parent) :QWidget(parent),ui(new Ui::database)
{ui->setupUi(this);qDebug()<<QSqlDatabase::drivers();
//    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
//    db.setDatabaseName("test");QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("47.116.118.86");      //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)db.setPort(3306);                 //连接数据库端口号,与设置一致db.setDatabaseName("qtsql");      //连接数据库名,与设置一致db.setUserName("qt");          //数据库用户名,与设置一致db.setPassword("zhongkeruihe");    //数据库密码,与设置一致//    db.setHostName("47.116.118.86");
//    db.setPort(3306);
//    db.setDatabaseName("qtsql");
//    db.setUserName("qt");
//    db.setPassword("zhongkeruihe");bool ok = db.open();if (ok){// QMessageBox::information(this, "infor", "success");qDebug()<<"success";}else {QMessageBox::information(this, "警告!", "DataBase Open Failed,Check whether there is a database or whether the parameters are correct!!!");qDebug()<<"error open database because"<<db.lastError().text();//ui->label->setText(db.lastError().text());}//查询所有并放入表中SelectAllPushTableData();//初始化表格 格式
//     ui->tableView->setColumnWidth(0,80);
//     ui->tableView->setColumnWidth(1,150);
//     ui->tableView->setColumnWidth(2,70);
//     ui->tableView->setColumnWidth(3,70);
//     ui->tableView->setColumnWidth(4,70);
//     ui->tableView->setColumnWidth(5,70);
//     ui->tableView->setColumnWidth(6,70);
//     ui->tableView->setColumnWidth(7,70);/*初始化下拉框*/ui->comboBox_2->addItem("温度");ui->comboBox_2->addItem("湿度");ui->comboBox_2->addItem("光照强度");ui->comboBox_2->addItem("二氧化碳");ui->comboBox->addItem("水位");ui->comboBox_2->addItem("位置");ui->comboBox_2->addItem("亮度");ui->comboBox_2->addItem("通风");ui->comboBox_2->addItem("喷淋");ui->comboBox_2->addItem("雾培");ui->comboBox_2->addItem("水加热");ui->comboBox_2->addItem("位置变化");ui->comboBox_2->addItem("温度变化");/*设置日期查询的初始化*/ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(0));setFixedSize(750,650);setWindowTitle("——数据库管理平台——");
}void database::SelectAllPushTableData(){tableModel = new QSqlQueryModel;//定义一个数据库模型,指定父对象QString strSelectData = "select * from qtdata";tableModel->setQuery(strSelectData);ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableView->setModel(tableModel);}//void database::UpdataToDataBase(QString Stemp,QString Shumi,QString Slight,QString Ssoil,QString Smq2,QString Srain)
//{
//    float val[6];//    val[0] = Stemp.toFloat();
//    val[1] = Shumi.toFloat();
//    val[2] = Slight.toFloat();//    val[3] = Ssoil.toFloat();
//    val[4] = Smq2.toFloat();
//    val[5] = Srain.toFloat();//   // qDebug()<<val[0]<<" "<<val[1]<<" "<<val[2]<<" "<<val[3]<<" "<<val[4]<<" "<<val[5]<<" "<<" ";//    //插入
//    insertData(val);//    //查询并全部显示
//    SelectAllPushTableData();//}插入数据
//bool database::insertData(float val[14])
//{
//    QSqlQuery query;//    //QDateTime currentTime = QDateTime::currentDateTime();//    QString stInsertData = "insert into qtdata values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//    query.prepare(stInsertData);//准备SQL语句//    query.addBindValue(val[0]);
//    query.addBindValue(val[1]);
//    query.addBindValue(val[2]);
//    query.addBindValue(val[3]);
//    query.addBindValue(val[4]);
//    query.addBindValue(val[5]);
//    query.addBindValue(val[6]);
//    query.addBindValue(val[7]);
//    query.addBindValue(val[8]);
//    query.addBindValue(val[9]);
//    query.addBindValue(val[10]);
//    query.addBindValue(val[11]);
//    query.addBindValue(val[12]);
//    query.addBindValue(QDateTime::currentDateTime().addSecs(0).toString("yyyy-MM-dd hh:mm:ss"));
//    // query.addBindValue()方法将各个值绑定到SQL语句中的占位符//    // query.exec()执行SQL语句,如果执行失败,将输出错误信息
//    if(!query.exec())
//    {
//        qDebug()<<query.lastError();
//    }
//    return true;
//}//清空表
bool database::clearDBTable()
{QSqlQuery query;QString strClearDB = "delete from qtdata";//创建一个消息框,询问用户是否确认操作QMessageBox::StandardButton reply;reply = QMessageBox::question(this,"清除数据","确定要清除表中数据?",QMessageBox::Yes|QMessageBox::No);//根据用户的选择执行相应的操作if (reply == QMessageBox::Yes){query.prepare(strClearDB);}else if(reply == QMessageBox::No){}if(!query.exec()){qDebug()<<query.lastError();}return true;
}//日期查询
void database::SelectData()
{tableModel = new QSqlQueryModel;//定义一个数据库模型,指定父对象QString startTime = ui->dateTimeEdit->text();QString startTime2 = ui->dateTimeEdit_2->text();//查询操作QString strSelectData = "select *from qtdata where CurrenTime between '"+startTime+"' and '"+startTime2+"';";tableModel->setQuery(strSelectData);ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableView->setModel(tableModel);
}database::~database()
{delete ui;
}//退出
void database::on_exit_bt_clicked()
{this->close();
}//查询按钮  ->查询指定日期
void database::on_select_data_bt_clicked()
{SelectData();
}//显示所有
void database::on_displayAll_bt_clicked()
{SelectAllPushTableData();
}//now
void database::on_now_bt_clicked()
{//当前时间ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));
}
//最近一天
void database::on_currDay_bt_clicked()
{//上一天ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24));//当前时间ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));SelectData();
}
//最近三天
void database::on_currThDay_bt_clicked()
{//三天前天ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24*3));//当前时间ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));SelectData();
}
//最近一周
void database::on_currWeek_bt_clicked()
{//七天前ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24*7));//当前时间ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));SelectData();
}//条件查询
void database::on_select_val_bt_clicked()
{//获取索引值QString strNum = ui->comboBox_2->currentText();//获取上下值QString downNum = ui->spinBox->text();QString upNum = ui->spinBox_2->text();//查询操作QString strSelectData = "select *from qtdata where "+strNum+" >= "+downNum+" && "+strNum+"<="+upNum+";";tableModel->setQuery(strSelectData);ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableView->setModel(tableModel);
}//添加
/*
void database::on_add_bt_clicked()
{//插入数据// insertData();//查询并显示SelectAllPushTableData();
}*///清空表按钮
void database::on_clear_bt_clicked()
{clearDBTable();SelectAllPushTableData();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GraphRAG的实践

好久没有体验新技术了&#xff0c;今天来玩一下GraphRAG 顾名思义&#xff0c;一种检索增强的方法&#xff0c;利用图谱来实现RAG 1.配置环境 conda create -n GraphRAG python3.11 conda activate GraphRAG pip install graphrag 2.构建GraphRAG mkdir -p ./ragtest/i…

MySQL通过bin-log恢复数据

MySQL通过bin-log恢复数据 1.bin-log说明2.数据恢复流程2.1 查看是否开启bin-log2.3 查看bin-log2.4 执行数据恢复操作2.5 检查数据是否恢复 1.bin-log说明 mysqldump和bin-log都可以作为MySQL数据库备份的方式&#xff1a; mysqldump 用于将整个或部分数据库导出为可执行的S…

周记-20240722

我现在写的周记已经不能称之为周记了&#xff0c;因为我太忙了&#xff0c;不知不觉整个6月都在忙&#xff0c;然后7月也在忙工作&#xff0c;6月下旬前期我感冒好了&#xff0c;过得还行&#xff0c;后来月底参加了单位的登山比赛&#xff0c;然后获得了名次&#xff0c;赢得了…

cms wpscan使用方式--kali linux

WPScan是一个用于WordPress安全审计和漏洞扫描的工具&#xff0c;可以通过以下命令来使用WPScan&#xff1a; 扫描一个网站&#xff1a; wpscan --url http://example.com扫描一个网站并指定用户名和密码&#xff1a; wpscan --url http://example.com --useradmin --passwo…

RoundCube搭建安装教程:服务器配置方法?

RoundCube搭建安装教程的疑问解析&#xff01;怎么搭建邮件系统&#xff1f; RoundCube是一款开源的Web邮件客户端&#xff0c;具有现代化的用户界面和丰富的功能&#xff0c;可以通过浏览器访问邮件服务器。AokSend将详细介绍如何在服务器上配置和安装RoundCube&#xff0c;以…

【Linux】SYSCALL_DEFINE4 openat执行流程摸索

在上一篇博客&#xff0c;我们基于pr_info这个内核类似c语言printf打印宏完成了打印&#xff0c;基本实现了自由开关打印&#xff0c;可以设定打印日志次数&#xff08;代码写了&#xff0c;大概10行代码&#xff09;&#xff0c;在测试的时候发现居然还有意外收获&#xff0c;…

物联网平台是干什么的用的

物联网平台是一个基于互联网技术和传感器技术&#xff0c;用于实现物联网应用开发、管理和运营的软件平台。以下是物联网平台的主要用途和功能&#xff0c;以及在一些领域的应用举例&#xff1a; 一、物联网平台的主要用途和功能 设备管理&#xff1a;物联网平台能够管理大量的…

嵌入式硬件-Xilinx FPGA DDR4 接口配置基础(PG150)

1. 简介 1.1 DDR4 SDRAM 控制器主要特点 支持8到80位接口宽度的组件&#xff08;支持 RDIMM、LRDIMM、UDIMM 和 SODIMM&#xff09; 最大组件限制为9&#xff0c;此限制仅适用于组件&#xff0c;不适用于 DIMM。密度支持 最高支持 32 GB 的组件密度&#xff0c;64 GB 的 LRDI…

Transformer图文详解【Attention is all you need】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 三、Transformer图文详解【Attention is all you need】 文章目录 NLP-大语言模型学习系列目录一、Transformer框架二、Encoder&#xff08;1&#x…

透彻理解Transformer模型:详解及实用示例(C#版)

随着自然语言处理&#xff08;NLP&#xff09;技术的发展&#xff0c;Transformer模型已经成为了许多现代NLP任务的基础。在这篇文章中&#xff0c;我们将深入解析Transformer模型的核心原理&#xff0c;并提供详细的C#代码示例&#xff0c;帮助您理解和实现这一强大的模型。 …

第十四届蓝桥杯省赛C++B组I题【景区导游】题解(AC)

解题思路 题目已给出地图为一个 n n n 个点&#xff0c; n − 1 n-1 n−1 条路线的树。 对于计算树中任意两点的距离&#xff0c;我们可以使用 LCA 算法进行快速计算。 假设 a , b a, b a,b 的最近公共祖先为 c c c&#xff0c;那么 a , b a,b a,b 之间的距离为 d i s …

太速科技-基于XCVU9P+ C6678的8T8R的无线MIMO平台

基于XCVU9P C6678的8T8R的无线MIMO平台 一、板卡概述 板卡基于TI TMS320C6678 DSP和XCVU9P高性能FPGA&#xff0c;FPGA接入4片AD9361 无线射频&#xff0c;构建8输入8输出的无线MIMO平台&#xff0c;丰富的FPGA资源和8核DSP为算法验证和信号处理提供强大能力。 二…

数据仓库中的数据治理方法

在数据仓库中&#xff0c;数据治理是确保数据质量和可信度的重要实践。数据治理方法涉及规划、执行和监控一系列活动&#xff0c;以保障数据的准确性、完整性和一致性。 一、数据清洗&#xff1a; 数据清洗是数据治理中的一项关键任务&#xff0c;用于检测和纠正数据中的错误…

python:本机摄像头目标检测实时推理(使用YOLOv8n模型)

本文将介绍如何使用本机摄像头进行目标检测实时推理的python代码。 文章目录 一、下载YOLO权重文件二、环境配置三、完整代码 一、下载YOLO权重文件 https://github.com/ultralytics/ultralytics?tabreadme-ov-file 拉到网页最下面&#xff0c;选择适合的模型&#xff0c;下…

【引领未来智造新纪元:量化机器人的革命性应用】

在日新月异的科技浪潮中&#xff0c;量化机器人正以其超凡的智慧与精准的操作&#xff0c;悄然改变着各行各业的生产面貌&#xff0c;成为推动产业升级、提升竞争力的关键力量。今天&#xff0c;让我们一同探索量化机器人在不同领域的广泛应用价值&#xff0c;见证它如何以科技…

sql注入的专项练习(含代码审计)

在做题之前先复习了数据库的增删改查&#xff0c;然后自己用本地的环境&#xff0c;在自己建的库里面进行了sql语句的测试&#xff0c;主要是回顾了一下sql注入联合注入查询的语句和sql注入的一般做题步骤。 1.获取当前数据库 2.获取数据库中的表 3.获取表中的字段名 一、sql…

饥荒dst联机服务器搭建基于Ubuntu

目录 一、服务器配置选择 二、项目 1、下载到服务器 2、解压 3、环境 4、启动面板 一、服务器配置选择 首先服务器配置需要2核心4G&#xff0c;4G内存森林加洞穴大概就占75% 之后进行服务器端口的开放&#xff1a; tcp:8082 tcp:8080 UDP:10888 UDP:10998 UDP:10999 共…

TiDB实践—索引加速+分布式执行框架创建索引提升70+倍

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/92d348c2 背景介绍 TiDB 采用在线异步变更的方式执行 DDL 语句&#xff0c;从而实现 DDL 语句的执行不会阻塞其他会话中的 DML 语句。按照是否需要操作 DDL 目标对象所包括的数据来划分…

ubuntu 源码安装postgresql16.0

使用 root 账户进行安装安装路径&#xff1a;/opt/pgsql16 手动创建数据存储路径&#xff1a;/data/pgsql16/data 手动创建数据库配置文件 /data/pgsql16/data/postgresql.conf 会自动生成 开始安装 刷新本地包索引、安装相关依赖 apt-get update -y apt-get upgrade -y apt-…