目录
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、//删除数据
socket = new QTcpSocket(this);
connect(socket, &QTcpSocket::connected, [=](){
ui->pb_connect->setText("断开连接");
ui->pb_send->setEnabled(true);
});
connect(socket, &QTcpSocket::disconnected, [=](){
ui->pb_connect->setText("连接");
ui->pb_send->setEnabled(false);
});
connect(socket, &QTcpSocket::readyRead, [=](){
QByteArray data = socket->readAll();
//QString tmp = ui->te_receive->toPlainText();
ui->te_receive->append(QString::fromLocal8Bit(data));
});
socket->connectToHost(QHostAddress(ip), port.toUShort());
if (socket->write(ui->te_send->toPlainText().toLocal8Bit()) == -1) //使用toLocal8Bit可以支持中文
{
qDebug() << "客户端发送数据失败";
}
else
{
qDebug() << "客户端发送数据成功";
}
QByteArray data = socket->readAll();
ui->te_receive->append(QString::fromLocal8Bit(data)); //使用fromLocal8Bit可以支持中文
server = new QTcpServer(this);
//设置监听的IP地址和端口
server->listen(QHostAddress::AnyIPv4, 8888);
connect(server, &QTcpServer::newConnection, [=](){
if (server->hasPendingConnections())//如果有待处理的新连接
{
socket = server->nextPendingConnection();//处理新连接, 获得通信套接字,以后双方的通信基于此套接字,每个新连接会产生一个新的通信套接字
}
connect(socket, &QTcpSocket::disconnected, [=](){
ui->pb_send->setEnabled(false);
});
connect(socket, &QTcpSocket::readyRead, [=](){
//读取接收到的数据
QByteArray data = socket->readAll();
ui->te_receive->append(QString::fromLocal8Bit(data));
});
});
if (socket->write(ui->te_send->toPlainText().toLocal8Bit()) == -1)
{
qDebug() << "服务器发送数据失败";
}
else
{
qDebug() << "服务器发送数据成功";
}
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);
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();
}
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();
}
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());
}
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();
}
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();
}