Qt:无法打开包含文件:"QtSql":没有这样的文件或目录
Qt : Cannot open include file: 'QtSql': No such file or directory
这可能是一个重复的问题,但建立的答案并没有解决我的问题。我试图在QT中创建客户端服务器应用程序,其中客户端向服务器发送字符串消息代码,服务器必须连接到sql server数据库并检索相对于客户端的消息代码的数据。下面是我目前写的服务器部分。但我得到这个错误:无法打开包含文件:'QtSql':没有这样的文件或目录。当我制作单独的项目并运行数据库部分时,它工作完美,但当我把它们放在一起时,它失败了。谁有什么建议可以解决这个问题?
ServerSocket.pro
QT += core
QT += network
QT += sql
QT -= gui
TARGET = ServerSocket
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
server.cpp
HEADERS +=
server.h
ServerSocket.h
#ifndef SERVER_H
#define SERVER_H
#include <QObject>
#include <QDebug>
#include <QTcpServer>
#include <QTcpSocket>
class Server : public QObject
{
Q_OBJECT
public:
explicit Server(QObject *parent = 0);
signals:
public slots:
void newConnection();
private:
QTcpServer *server;
};
#endif // SERVER_H
ServerSocket.cpp
#include "server.h"
#include <QtSql>
Server::Server(QObject *parent) :
QObject(parent)
{
server = new QTcpServer(this);
connect(server, SIGNAL(newConnection()),this,SLOT(newConnection()));
if(!server->listen(QHostAddress::Any,1234)){
qDebug() << "Server could not start";
} else {
qDebug() << "Server started";
}
}
void Server::newConnection(){
QTcpSocket *socket = server->nextPendingConnection();
socket->write("hello client");
socket->waitForBytesWritten(1000);
socket->waitForReadyRead(1000);
QString appCode = socket->readAll();
QString servername = "LOCALHOST\SQLEXPRESS";
QString dbname = "ApplicationsDB";
QString connectionTemplate = "DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;";
QSqlQuery query;
QStringList results;
QString connectionString = connectionTemplate.arg(servername).arg(dbname);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(connectionString);
if (db.open())
{
qDebug() << "Opened";
query = db.exec("select Code from Application a where a.Name = '") + appCode + "';";
while (query.next())
{
QString result = query.record().value(0).toString();
results.append(result);
}
for(QString res : results){
qDebug() << res;
}
}
else
{
qDebug() << "Error = " << db.lastError().text();
}
db.close();
}
这些对我来说似乎都很好。请确保qmake重新正常运行。
必须显式地完成,不幸的是,因为当您修改项目文件时,它还不能自动识别何时应该重新运行。
相关文章:
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- C++文件包含多行
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- C++ 逐行从文件(包含空格)读取数据
- 在 C++ 中,.h 文件包含文件但不起作用
- 生成的资源文件包含奇怪的包含文件
- 可变参数类的文件包含问题
- 为什么文件命令声明可执行文件包含"debug_info"
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 为什么将.HPP文件包含在.h文件中
- Qt C++:将所有库文件包含在项目文件夹中
- 有条件地将文件包含在C++标头中
- 将多个原型文件包含在一个项目中会导致protobuf_AssignDescriptorsOnce()已经有一个主体
- 有没有办法将文件包含在C++中的所有项目文件中
- 将外部.asm文件包含到C++代码中
- 什么是"pch.h",为什么需要将其作为第一个头文件包含在内?
- 该头文件包含DirectX 12中的ThrowIfFailed()
- QT C :函数的多个定义当Header文件包含在MainWindow.h中时
- QT创建者错误地处理标头文件包含来自Directory