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

    }     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值