Qt编程,TCP编程、数据库

目录

1、TCP: QTcpServer | QTcpSocket

     1、  ##TCP客户端

    1、//连接成功信号

    2、//连接断连信号

      3、 //数据就绪信号

      4、 //连接到服务器,使用服务器的IP地址和端口

    5、//发送数据到服务器

      6、//从服务器接收数据

  2、##TCP服务器端

       1、//创建TCP服务器对象

       2、//新连接信号

       3、//断连的信号

        4、 //接收数据就绪信号

    5、//发送数据到客户端

2、SQLITE 数据库编程

       1、//创建表

    2、//数据插入方式1

      3、 //查询数据

     4、  //修改数据

       5、//删除数据

1、TCP: QTcpServer | QTcpSocket

     1、  ##TCP客户端

    socket = new QTcpSocket(this);

    1、//连接成功信号

    connect(socket, &QTcpSocket::connected, [=](){

        ui->pb_connect->setText("断开连接");

        ui->pb_send->setEnabled(true);

    });

    2、//连接断连信号

    connect(socket, &QTcpSocket::disconnected, [=](){

        ui->pb_connect->setText("连接");

        ui->pb_send->setEnabled(false);

    });

      3、 //数据就绪信号

    connect(socket, &QTcpSocket::readyRead, [=](){

        QByteArray data = socket->readAll();

        //QString tmp = ui->te_receive->toPlainText();

        ui->te_receive->append(QString::fromLocal8Bit(data));

    });   

      

      4、 //连接到服务器,使用服务器的IP地址和端口

       socket->connectToHost(QHostAddress(ip), port.toUShort());

      

    5、//发送数据到服务器

    if (socket->write(ui->te_send->toPlainText().toLocal8Bit()) == -1) //使用toLocal8Bit可以支持中文

    {

        qDebug() << "客户端发送数据失败";

    }

    else

    {

        qDebug() << "客户端发送数据成功";

    }

      6、//从服务器接收数据

       QByteArray data = socket->readAll();

       ui->te_receive->append(QString::fromLocal8Bit(data)); //使用fromLocal8Bit可以支持中文

      

      

  2、##TCP服务器端

       1、//创建TCP服务器对象

       server = new QTcpServer(this);

       //设置监听的IP地址和端口

    server->listen(QHostAddress::AnyIPv4, 8888);

       2、//新连接信号

    connect(server, &QTcpServer::newConnection, [=](){

        if (server->hasPendingConnections())//如果有待处理的新连接

        {

            socket = server->nextPendingConnection();//处理新连接, 获得通信套接字,以后双方的通信基于此套接字,每个新连接会产生一个新的通信套接字

        }

       

       3、//断连的信号

        connect(socket, &QTcpSocket::disconnected, [=](){

           ui->pb_send->setEnabled(false);

        });

        4、 //接收数据就绪信号

        connect(socket, &QTcpSocket::readyRead, [=](){

                     //读取接收到的数据

            QByteArray data = socket->readAll();

            ui->te_receive->append(QString::fromLocal8Bit(data));

        });

    });   

    5、//发送数据到客户端

    if (socket->write(ui->te_send->toPlainText().toLocal8Bit()) == -1)

    {

        qDebug() << "服务器发送数据失败";

    }

    else

    {

        qDebug() << "服务器发送数据成功";

    }

      

2、SQLITE 数据库编程

       qmake: QT += sql

       使用到的类:

       QSqlDatabase  //数据库连接

       QSqlQuery     //数据SQL语句执行

      

       //创建SQLITE数据库连接

       QSqlDatabase db_student = QSqlDatabase::addDatabase("QSQLITE");//使用SQLITE数据库

     

       //设置数据库的文件名

       db_student.setDatabaseName(db_file_name);

      

       //打开数据库

       if (!db_student.open())

       {

              qDebug() << "打开数据库失败1";

       }     

      

       //关闭数据库

       db_student.close();

       //使用当前的数据库连接 执行SQL操作

       QSqlQuery query(db_student);

      

       1、//创建表

       QString queryStr = "create table Student (id varchar(64) PRIMARY KEY, name varchar(64), gender varchar(64), age int)";

       if (!query.exec(queryStr))

       {

              qDebug() << "创建数据库表失败";

              qDebug() << query.lastError().text();

       }     

    2、//数据插入方式1

       queryStr = "insert into Student values('2309250001', '张三', '男', 13)";

       if (!query.exec(queryStr))

       {

              qDebug() << "插入数据失败";

              qDebug() << query.lastError().text();

       }

      

       //数据插入方式2

       queryStr = "insert into Student values(?,?,?,?)";

       query.prepare(queryStr);

       query.addBindValue("2309250002");

       query.addBindValue("李四");

       query.addBindValue("男");

       query.addBindValue(12);

       if (!query.exec())

       {

              qDebug() << "插入数据失败2";

              qDebug() << query.lastError().text();

       }     

      

       //数据插入方式3

    QString queryStr = "insert into Student values(:id,:name,:gender,:age)";

    query.prepare(queryStr);

    query.bindValue(":id", ui->le_id->text());

    query.bindValue(":name", ui->le_name->text());

    query.bindValue(":gender", ui->cbb_gender->currentText());

    query.bindValue(":age", ui->le_age->text().toInt());

    if (!query.exec())

    {

        qDebug() << "execute " << queryStr << " failed";

        qDebug() << query.lastError().text();

    }

      

      3、 //查询数据

       QString queryStr = "select * from Student";

    if (!query.exec(queryStr))

    {

        qDebug() << "execute " << queryStr << " failed";

        qDebug() << query.lastError().text();

    }     

      

    QString queryStr = "select * from Student where id = :id";

    query.prepare(queryStr);

    query.bindValue(":id", ui->le_id->text());

    if (!query.exec())

    {

        qDebug() << "execute " << queryStr << " failed";

        qDebug() << query.lastError().text();

    }

    while (query.next())

    {

        ui->le_name->setText(query.value(1).toString());

        ui->cbb_gender->setCurrentText(query.value(2).toString());

        ui->le_age->setText(query.value(3).toString());

    }     

      

     4、  //修改数据

    QString queryStr = "update Student set name=?, gender=?,age=? where id=?";

    query.prepare(queryStr);

    query.addBindValue(ui->le_name->text());

    query.addBindValue(ui->cbb_gender->currentText());

    query.addBindValue(ui->le_age->text());

    query.addBindValue(ui->le_id->text());

    if (!query.exec())

    {

        qDebug() << "execute " << queryStr << " failed";

        qDebug() << query.lastError().text();

    }     

       5、//删除数据

    QString queryStr = "delete from Student where id = :id";

    query.prepare(queryStr);

    query.bindValue(":id", ui->le_id->text());

    if (!query.exec())

    {

        qDebug() << "execute " << queryStr << " failed";

        qDebug() << query.lastError().text();

    }     

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

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

相关文章

linux之shell记录

shell属于一种很容易学习的程序设计语言&#xff0c;依赖于功能强大的命令可以编写提高开发效率的脚本。这里记录一下常用的shell相关的知识点。 持续更新中。。。 1、在linux或mac中查看使用的shell echo $SHELL /bin/bashshell是一种脚本语言&#xff0c;就会有解释器来执行…

Spring中注入的使用

目录 一、什么是注入&#xff08;Injection&#xff09; 1.1 为什么要注入 二、注入的基本使用 三、Spring注入原理分析 一、什么是注入&#xff08;Injection&#xff09; 注入就是通过Spring的配置文件&#xff0c;为所创建对象的成员变量进行赋值 1.1 为什么要注入 书接上…

Java 中实现单例模式

单例模式 单例模式&#xff0c;就是一个类在任何情况下绝对只有一个实例&#xff0c;并且提供一个全局访问点来获取该实例。 要实现单例&#xff0c;至少需要满足两个点&#xff1a; 私有化构造方法&#xff0c;防止被外部实例化造成多实例问题 提供一个静态方位作为全局访问点…

Linux:进程控制

目录 一、进程创建 写时拷贝 二、进程终止 echo $? 如何终止进程 _exit与exit 三、进程等待 进程等待的必要性 进程等待的操作 wait waitpid status 异常退出情况 status相关宏 options 四、进程程序替换 1、关于进程程序替换 2、如何进行进程程序替换 程序…

函数防抖(javaScript)

防抖说明 &#xff08;1&#xff09;防抖的目的&#xff1a; 当多次执行某一个动作的时候&#xff0c;限制函数调用的次数&#xff0c;节约资源。 &#xff08;2&#xff09;防抖的概念&#xff1a; 函数防抖&#xff08;debounce&#xff09;&#xff1a;就是指触发事件后&…

Python中图像相似性度量方法汇总

1. 引言 在当前到处充满着图像的世界里&#xff0c;测量和量化图像之间的相似性已经成为一项关键的任务。无论是图像检索、内容推荐还是视觉搜索&#xff0c;图像相似性方法在现代计算机视觉的应用中都发挥着关键的作用。 幸运的是&#xff0c;Python提供了大量的工具和库&am…

想要精通算法和SQL的成长之路 - 分割数组的最大值

想要精通算法和SQL的成长之路 - 分割数组的最大值 前言一. 分割数组的最大值1.1 二分法 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 分割数组的最大值 原题链接 首先面对这个题目&#xff0c;我们可以捕获几个关键词&#xff1a; 非负整数。非空连续子数组。 那么我…

组合数(1) 用Vector实现获取所有组合数列表的QT实现

1.工程文件 QT coreCONFIG c17 cmdline# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.…

BIM轻量化技术简介

BIM轻量化技术是指在工程建筑的BIM模型建立之后&#xff08;利用专业的BIM建模软件&#xff0c;比如Autodesk Revit, Bentley MicroStation, DS Catia等&#xff09;&#xff0c;通过对BIM模型的压缩处理等技术手段&#xff0c;让BIM可以在各类WEB浏览器、移动App上被使用的技术…

【RTOS学习】优先级 | Tick | 任务状态 | 空闲任务 | 任务调度

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 优先级 | Tick | 任务状态 | 空闲任务 | 任务调度 &#x1f3c0;优先级⚽任务管理 &#x1f3c0;T…

LockSupport-park和unpark编码实战

package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport;/*** author zhou* version 1.0* date 2023/10/16 9:11 下午*/ public class LockSupportDemo {public static void main(String[] args) {…

批处理文件(.bat)中,dir与tree命令的效果

目录 dir命令 用法 操作 效果 dir /? dir dir D:\111\111_3 dir D:\111 *.mp4 dir D:\111 /ad dir D:\111 /ar dir D:\111 /s dir D:\111\111_3 >1bat.txt dir D:\111 >>1bat.txt tree命令 用法 操作 效果 tree /? tree tree D:\111\111_3 tree…

软考高项第四版教材整合管理(第8章)重点内容

序&#xff1a;距离2023下半年软考还有18天&#xff0c;来不及看书的小伙伴看过来啦&#xff0c;一起过一下重点&#xff0c;开始之前&#xff0c;建议大家将下面的过程组矩阵图熟记&#xff01;&#xff01;&#xff01; 第8章 项目整合管理 项目整合管理包括识别、定义、组…

node教程

文章目录 1.node入门 1.node入门 node是什么&#xff1f; node.js是一个开源的&#xff0c;跨平台的JS运行环境&#xff08;其实可以理解为是一款应用程序&#xff0c;是一款软件&#xff0c;可以运行JS&#xff09; node作用&#xff1a; 1.开发服务器应用

【LeetCode热题100】--169.多数元素

169.多数元素 使用哈希表&#xff1a; class Solution {public int majorityElement(int[] nums) {int n nums.length;int m n/2;Map<Integer,Integer> map new HashMap<>(); //定义一个hashfor(int num:nums){Integer count map.get(num); //Map.get() 方法…

8、docker 安装 nginx

1、下载镜像 docker pull nginx 2、本机创建目录 1&#xff09;创建nginx挂载目录 mkdir /usr/local/nginx 2&#xff09;进入nginx目录 cd /usr/local/nginx 3&#xff09;创建 www和logs目录 mkdir -p www logs 3、创建nginx容器 此容器用于复制配置文件&#xff0c;复…

[Spring] SpringMVC 简介(三)

目录 九、SpringMVC 中的 AJAX 请求 1、简单示例 2、RequestBody&#xff08;重点关注“赋值形式”&#xff09; 3、ResponseBody&#xff08;经常用&#xff09; 4、为什么不用手动接收 JSON 字符串、转换 JSON 字符串 5、RestController 十、文件上传与下载 1、Respo…

将中文名格式化输出为英文名

要求&#xff1a; 编写Java程序&#xff0c;输入样式为&#xff1a;Zhong wen ming的人名&#xff0c;以 Ming,Zhong.W 的形式打印出来。其中.W是中间单词的首字母&#xff1b;例如输入”Willian Jefferson Clinton“,输出形式为&#xff1a;Clinton,Willian.J public static …

【仪器仪表专题】案例:测试充电芯片保护时间测试10小时后电子负载自动下线是为什么?

测试充电芯片保护时间有两种办法,一种是使用真实的电池让充电芯片一直充电(可以通过降充电电流、修改时间参数或是并电池增加容量的方式)。另一种是使用电子负载的CV模式模拟电池(需要增加一个芯片NTC电阻来避免充电芯片发生NTC错误)。 为了最完整的还原这个过程,我采取…

IDEA实现远程Debug调试

一、 前提   需要准备JDK1.8环境&#xff0c;安装IDEA(版本不限) 二、 IDEA中如何实现远程Debug模式 (1)、创建demo项目 1.File一>New一>project… 2.Maven Archetype一>填写Name一>选择jdk1.8一>选择Web一>创建 (2)、配置Idea 找到Remote Jvm Debug java…