注:本文不教怎么下载和安装软件,仅提供安装注意事项及环境搭建方法,本文所有涉及到的文件路径请根据自己实际安装位置进行更改,下文不再赘述。
一、搭建环境前需要准备的文件
Qt下载地址: http://download.qt.io/archive/ VS2017下载地址: https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ MySQL下载地址: https://dev.mysql.com/downloads/mysql/
本文中使用的软件版本: Qt5.14.2 VS2017 MySQL8.0.26
二、安装软件注意事项
2.1 安装Qt时必须要勾选的组件
三、Qt+VS环境搭建
3.1 安装VS扩展
打开VS2017,依次找到 “工具”>“扩展和更新”,在"联机"选项中搜索"qt"找到"Qt Visual Studio Tools"并安装它。
3.2 配置Qt VS Tools
①打开"Qt VS Tools">“Qt VerSions” ②添加"qmake.exe" (默认路径:C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe) ③注:因网上大部分文章中"Qt VS Tools"的配置选项跟我的配置有点不同,故在此将网上其他配置方式也一并放上来。此操作最终效果实际上与第②步操作相同,②③两步选择与自己实际情况选择。
四、QT+MySQL环境搭建
由于各种原因,Qt没有提供MySQL数据库驱动,需要自己编译一个动态库。
4.1 配置MySQL环境变量
(默认路径:C:\Program Files\MySQL\MySQL Server 8.0\bin)
4.2 测试MySQL环境变量配置是否成功
打开cmd,使用"mysql -u 用户名 -p"命令测试,如下图所示:
4.3 在连接数据库时可能会遇到问题
在操作系统的"服务"中找到"MySQL80"服务,并启动它,如下图
4.4 使用Qt编译mysql动态库
①打开Qt源码中的"mysql.pro"项目,并将对下图两个文件代码进行更改: (默认路径:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro) ②将"mysql.pro"文件中的代码作如下更改:
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
LIBS += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib)
include(../qsqldriverbase.pri)
③将"qsqldriverbase.pri"文件中的代码作如下更改:
QT = core core-private sql-private
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
④更改完成后保存并构建项目
⑤构建项目完成后,可以在路径"C:\plugins\sqldrivers"下找到下图几个文件 ⑥将上图两个文件"qsqlmysql.dll"及"qsqlmysqld.dll"复制到以下路径: C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers ⑦在路径"C:\Program Files\MySQL\MySQL Server 8.0\lib"中找到"libmysql.lib" 并将其复制到"C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin"
五、使用VS编写代码测试Qt与MySQL的连接
5.1 创建Qt Widgets项目
注:在创建项目时,注意在Qt Modules选项中勾选"SQL",如下图:
如果在创建项目时忘记勾选了,可以在该项目的属性中重新勾选,如下图:
5.2 在main函数中编写代码如下:
#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QMessageBox>
#include <QtSql/QSqlDataBase>
#include <QtSql/QSqlError>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtWidgetsApplication1 w;
w.show();
QSqlDatabase *db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));
db->setHostName("localhost");
db->setPort(3306);
db->setDatabaseName("数据库名");
db->setUserName("用户名");
db->setPassword("密码");
if (db->open()) {
QMessageBox::information(NULL, "info", "Sql Connected.");
}
else {
QMessageBox::information(NULL, "info", "connect failed:" + db->lastError().text());
}
QString dbname = db->connectionName();
db->close();
delete db;
db = NULL;
QSqlDatabase::removeDatabase(dbname);
return a.exec();
}
5.3 调试程序
如下图所示即为数据连接成功:
|