windows10下 QT5.10成功连接MySQL5.7

本文详细介绍了如何在Windows10系统下使用QT5.10版本连接MySQL5.7数据库的过程,包括QT与MySQL的安装配置、MySQL服务的启动及密码设置、QT的MySQL接口库编译安装步骤,以及最终的连接测试代码。

windows10下 QT5.10成功连接MySQL5.7

注意:QT和MySQL的保持位数一样,我这里选择的都是32bit(99%建议要一样)
建议是:先阅读整篇文章特别注意标注的部分再开始安装
爬了两天坑!!!

1.QT安装(MinGW 32bit)

1.1.运行qt的安装程序,
选择安装目录,我选择E:\QT\qt5.10.1
选择需要的组件:
- 基本组件中的mingw
- source
- 其它自己需要的
- tools中的mingw
- tools中的qt creator

1.2.配置qt creator:
在开始菜单中找到qt creator4.5.1,打开,在菜单“工具”-“选项”-“构建和运行”-“编译器”中,可以看到qt creator自己已经找到了的c和c++编译器,是刚刚安装的qt的tools里面的mingw:
在这里插入图片描述
在这里插入图片描述
注意:这里记住安装的路径

2.MySQL安装(5.7.27 32bit)

2.1.官网下载mysql-5.7.27-win32.zip
下载网址为:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-win32.zip

2.2.解压到文件E:\MySQL 当然也可以时其它盘,并配置环境变量
右击计算机->属性->高级系统设置->环境变量->系统变量path 后添加 E:\MySQL\bin

2.3.在刚刚解压的根目录(即d:\mysql目录下)下,新建一个文本文件my.ini,将如下内容放入my.ini(格式为ANSI文本)文件中:

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

# 设置mysql的安装目录

basedir="E:\\MySQL"  

# 这里地址记得加引号,不然不能正常启动。

# 设置mysql数据库的数据的存放目录

datadir="E:\\MySQL\\data"

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine

4.以管理员身份运行cmd.exe(右击开始菜单->命令提示符) ,进入E:\MySQL\bin 目录下:1.e: 2.cd E:\MySQL\bin

5.初始化数据库 执行命令: mysqld --initialize-insecure ,这个命令设置root用户密码为空

6. 安装服务 执行命令:mysqld -install

7.启动服务 执行命令:net start mysql**

8.运行mysql 执行命令:mysql -uroot -p 进入mysql控制台
提示输入密码时,直接回车。(因为上面初始化时设置了没有密码)

9.修改密码:
update mysql.user set authentication_string=password(‘your password’) where user=‘root’;

3、编译、安装qt的mysql接口库

3.1. 用管理员权限打开qt的命令行(注意必须是开始菜单里qt文件夹下的那个qt的命令行,不能是普通命令行),进入mysql驱动的源码工程目录E:\Qt\Qt5.10.1\5.10.1\Src\qtbase\src\plugins\sqldrivers\mysql
在这里插入图片描述
注意:没有src文件可以百度下载一个

3.2.用文本编辑器打开mysql.pro,修改内容如下:

#QMAKE_USE += mysql 
QMAKE_LFLAGS +=e:/MySQL/lib/libmysql.dll

3.3.修改上一层目录中的qsqldriverbase.pri,修改内容如下:

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include($$shadowed($$PWD)/configure.pri)

3.4回到刚刚打开的qt命令行,执行命令:

qmake "INCLUDEPATH+=e:\\MySQL\\include\\" "LIBS+=e:\\MySQL\\lib\\libmysql.lib" -o Makefile mysql.pro

此时可以正常产生Makefile文件,继续执行命令

mingw32-make -r -j

注意:路径一定不能有空格
3.5.最后,把 E:\MySQL\lib目录下的文件 libmysql.dll 和 libmysqld.dll 拷贝到qt creator的配置中编译器所在的目录E:\QT\qt5.10.1\mingw_32\bin; libmysql.lib 和 libmysqld.lib拷贝到E:\QT\qt5.10.1\mingw_32\lib。
**注意:如果怕不成功,也有博主说可以把下面的5个文件都复制到E:\QT\qt5.10.1\mingw_32\bin **在这里插入图片描述
3.6.测试
(1)新建QT文件
在.pro中加入 QT +=sql
(3)代码

#include "widget.h"
#include "ui_widget.h"
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QtDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    qDebug() << QSqlDatabase::drivers();

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("mysql");
    db.setUserName("root");
    db.setPassword("你的密码");
    bool ok = db.open();

    if (ok)
    {
        qDebug() << "ok";
    }
    else
    {
        qDebug() << "no";
    }

}

Widget::~Widget()
{
    delete ui;
}

(3)结果
在这里插入图片描述
成功连接!
参考文章:http://blog.sina.com.cn/s/blog_7d668e960102x5lu.html

[dragon@localhost ~]$ rpm -qa | grep qt5-qtbase # 查看当前版本 qt5-qtbase-postgresql-5.11.1-23.ky10.x86_64 qt5-qtbase-mysql-5.11.1-23.ky10.x86_64 qt5-qtbase-common-5.11.1-23.ky10.noarch qt5-qtbase-gui-5.11.1-23.ky10.x86_64 qt5-qtbase-5.11.1-23.ky10.x86_64 [dragon@localhost ~]$ strings /usr/lib64/libQt5Core.so.5 | grep "Qt_5\." # 检查符号版本 Qt_5.11.1_PRIVATE_API Qt_5.0 Qt_5.1 Qt_5.2 Qt_5.3 Qt_5.4 Qt_5.5 Qt_5.6 Qt_5.7 Qt_5.8 Qt_5.9 Qt_5.10 Qt_5.11 [dragon@localhost ~]$ sudo yum install -y https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm Last metadata expiration check: 0:18:08 ago on 202511月03日 星期一 19时03分31. [MIRROR] qt5-qtbase-5.15.3-1.el8.x86_64.rpm: Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) [MIRROR] qt5-qtbase-5.15.3-1.el8.x86_64.rpm: Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) [MIRROR] qt5-qtbase-5.15.3-1.el8.x86_64.rpm: Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) [MIRROR] qt5-qtbase-5.15.3-1.el8.x86_64.rpm: Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) [FAILED] qt5-qtbase-5.15.3-1.el8.x86_64.rpm: Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) Status code: 404 for https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/q/qt5-qtbase-5.15.3-1.el8.x86_64.rpm (IP: 198.18.2.16) [dragon@localhost ~]$ sudo ldconfig [dragon@localhost ~]$ echo 'export PATH=$PATH:/usr/lib/virtualbox' | sudo tee -a /etc/profile export PATH=$PATH:/usr/lib/virtualbox [dragon@localhost ~]$ source /etc/profile [dragon@localhost ~]$ sudo /sbin/vboxconfig # 查看详细错误 vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Starting VirtualBox services. vboxdrv.sh: Building VirtualBox kernel modules. vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong. There were problems setting up VirtualBox. To re-start the set-up process, run /sbin/vboxconfig as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information. [dragon@localhost ~]$ dmesg | grep vboxdrv # 检查内核日志 dmesg: 读取内核缓冲区失败: 不允许的操作 [dragon@localhost ~]$ sudo yum install -y kernel-devel-$(uname -r) gcc make Last metadata expiration check: 0:19:01 ago on 202511月03日 星期一 19时03分31. Package kernel-devel-4.19.90-23.59.v2101.ky10.x86_64 is already installed. Package gcc-7.3.0-20190804.h30.p05.ky10.x86_64 is already installed. Package make-1:4.2.1-15.ky10.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! [dragon@localhost ~]$ # 生成密钥 sudo mokutil --import MOK.der # 导入密钥(需设置密码) [dragon@localhost ~]$ sudo openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/" Generating a RSA private key ..............................+++++ ..........+++++ writing new private key to 'MOK.priv' ----- [dragon@localhost ~]$ sudo mokutil --import MOK.der # 导入密钥(需设置密码)input password: input password again: [dragon@localhost ~]$ sudo rpm -ivh VirtualBox-6.1-6.1.46_158378_el8-1.x86_64.rpm 警告:VirtualBox-6.1-6.1.46_158378_el8-1.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2980aecf: NOKEY 错误:依赖检测失败: libQt5Core.so.5(Qt_5.12)(64bit) 被 VirtualBox-6.1-6.1.46_158378_el8-1.x86_64 需要 libSDL-1.2.so.0()(64bit) 被 VirtualBox-6.1-6.1.46_158378_el8-1.x86_64 需要 libvpx.so.5()(64bit) 被 VirtualBox-6.1-6.1.46_158378_el8-1.x86_64 需要 [dragon@localhost ~]$ sudo VBoxManage extpack install Oracle_VM*.vbox-extpack --accept-license=56be48f923303c8cbabbgbbg WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (4.19.90-23.59.v2101.ky10.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed. VBoxManage: error: Failed to create the VirtualBox object! VBoxManage: error: Code NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154) - Class not registered (extended info not available) VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start. [dragon@localhost ~]$ sudo rpm -ivh VirtualBox-6.1-6.1.46_158378_el8-1.x86_64.rpm --nodeps 警告:VirtualBox-6.1-6.1.46_158378_el8-1.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 2980aecf: NOKEY Verifying... ################################# [100%] 准备中... ################################# [100%] 软件包 VirtualBox-6.1-6.1.46_158378_el8-1.x86_64 已经安装 [dragon@localhost ~]$ sudo VBoxManage extpack install Oracle_VM*.vbox-extpack --accept-license=56be48f923303c8cbabbgbbg WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (4.19.90-23.59.v2101.ky10.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed. VBoxManage: error: Failed to create the VirtualBox object! VBoxManage: error: Code NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154) - Class not registered (extended info not available) VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start. [dragon@localhost ~]$ VBoxManage list extpacks | grep "Extension Packs" VBoxManage: error: Failed to create the VirtualBox object! VBoxManage: error: Code NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154) - Class not registered (extended info not available) VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start.
最新发布
11-04
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值