Qt4 通过tcp 传输sql 语句 代码
时间: 2023-12-19 17:05:54 浏览: 26
以下是一个简单的Qt4通过TCP传输SQL语句的示例代码,供参考:
服务器端代码:
```cpp
#include <QtGui/QApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123456");
// 启动TCP服务器
QTcpServer server;
server.listen(QHostAddress::Any, 1234);
QObject::connect(&server, SIGNAL(newConnection()), [&]() {
// 处理新连接
QTcpSocket* socket = server.nextPendingConnection();
QObject::connect(socket, SIGNAL(readyRead()), [&]() {
// 处理新数据
QByteArray data = socket->readAll();
// 执行SQL语句
QSqlQuery query;
if (query.exec(data))
{
// 查询成功
QString result;
while (query.next())
{
result += query.value(0).toString() + "\n";
}
socket->write(result.toUtf8());
}
else
{
// 查询失败
socket->write(query.lastError().text().toUtf8());
}
});
});
return a.exec();
}
```
客户端代码:
```cpp
#include <QtGui/QApplication>
#include <QTcpSocket>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 连接服务器
QTcpSocket socket;
socket.connectToHost("localhost", 1234);
if (!socket.waitForConnected())
{
qDebug() << "Connection failed:" << socket.errorString();
return -1;
}
// 发送SQL语句
QByteArray data = "SELECT * FROM users";
socket.write(data);
if (!socket.waitForBytesWritten())
{
qDebug() << "Write failed:" << socket.errorString();
return -1;
}
// 接收查询结果
if (!socket.waitForReadyRead())
{
qDebug() << "Read failed:" << socket.errorString();
return -1;
}
QString result = QString(socket.readAll());
qDebug() << "Result:" << result;
return a.exec();
}
```
请注意,此示例代码仅用于演示目的,实际应用中应该进行适当的错误处理和数据校验。同时,建议使用Qt5或更高版本,因为Qt4已经不再维护。