• 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();

        }     

  • 相关阅读:
    Redis的各种部署
    Linux巡检脚本
    java有关的HttpsUtils工具类 https请求工具类
    电脑系统重装后如何开启Win11实时辅助字幕
    IO模型4-NIO三大核心之Buffer
    设计模式_模板方法模式
    数字化转型是什么?企业数字化转型成功的2个必备条件!
    Spring原理学习(七)JDK动态代理与CGLIB代理底层实现
    链路状态路由协议OSPF的LSA头部讲解
    InternImage的DCNv3编译
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/133865098