Qt连接MySQL数据库

1 篇文章 0 订阅

Qt连接MySQL数据库

前提条件

  1. 下载MySQL
    msi下载链接: MySQL官网下载,安装教程: 详解2020MySQL安装(图文教程)
    免安装版下载链接MySQL官网下载
    我采用的是msi安装方式,安装目录为D:\Program Files\MySQL(后面用到)

  2. 下载Qt
    推荐使用镜像下载:清华镜像 ;
    也可直接用网盘下载:
    链接:https://pan.baidu.com/s/1Op_xKpx5OdtdSCDy2eyDEA
    提取码:p1od

    下载步骤推荐qt 5.12.1 下载安装详细教程

连接数据库

测试连接

首先新建一个空Qt项目,新建一个C++ source文件
在这里插入图片描述
在mysqlconnect.pro末尾添加

QT += widgets gui
QT += sql

通过编译代码

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QApplication>

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  //连接的MYSQL的数据库驱动
    db.setHostName("localhost");         //主机名
    db.setPort(3306);                    //端口
    db.setDatabaseName("database");          //数据库名
    db.setUserName("root");              //用户名
    db.setPassword("*********");            //密码
    db.open();
    //测试连接
    if(!db.open())
    {
        qDebug() << "不能连接";
    }
    else
    {
         qDebug() << "连接成功";
    }
    db.close();
    return a.exec();
}

出现没有加载驱动 “mysql drives not load”

查看驱动

运行代码(新建项目与文件同上一步)

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
 
    qDebug()<<"Avaliable drivers;";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver,drivers)
        qDebug()<<driver;
 
 
    return a.exec();
}

运行后如出现

在这里插入图片描述
说明没有连接MySQL的driver,进行下一步安装MySQL驱动

安装MySQL驱动

需要

  1. D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin里有libmysql.lib和libmysql.dll。

找到D:\Program Files\MySQL\MySQL Server 8.0\lib下的两个文件libmysql.lib,libmysql.dll,将其复制到D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin文件夹下(其他编译文件夹如msvc2017也可试试复制过去)

  1. D:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers里有qsqlmysql.dll(看到其他教程还需要qsqlmysqld.dll,但是我这里只要一个好像也能运行)

用Qt打开D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql的mysql.pro,
在末尾添加

INCLUDEPATH += "D:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "D:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
DESTDIR = "../mysql/mysqlDll"    # 设置编译好的qmysql.dll放置的目录,倒也可以不添加试试

打开Qt5.14.2(MinGW 7.3.0 64-bit) promt
切换到D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,执行

qmake mysql.pro
nmake
nmake release
  • a. 如遇到两个错误:
    1.Cannot read H:/qtsqldrivers-config.pri: No such file or directory;
    2.Project ERROR: Library ‘mysql’ is not defined.

第一个错误:将qsqldrivebase.pri的第四行改为

include(./qtsqldrivers-config.pri)

因为qtsqldrivers-config.pri在mysql上一级目录sqldrives能找到,是文件位置的不对,只需要修改到上一级目录即可
第二个错误:将mysql.pro的"QMAKE_USE += mysql"直接在前面添加#注释掉。

  • b. Cannot run compiler 'cl’

往环境变量添加D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64(我的vs安装目录)

  • c. fatal error U1073: 不知道如何生成“D:/Program\”

这是由于

INCLUDEPATH += "D:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "D:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"

这一部分的空格问题。
可以把MySQL文件夹先从Program Files文件夹移出来(因为不好直接将Program Files的空格去掉),我移到D盘,然后将MySQL文件夹后的文件夹全都去掉空格

修改mysql.pro变成

INCLUDEPATH += "D:/MySQL/MySQLServer8.0/include"
LIBS += "D:/MySQL/MySQLServer8.0/lib/libmysql.lib"

如果最后全部编译成功后可以看到MysqlDll文件夹下有qsqlmysql.dll
在这里插入图片描述
将qsqlmysql.dll复制到D:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers下

在这里插入图片描述

再次测试连接
在这里插入图片描述

查看驱动
在这里插入图片描述
完结撒花

  • 11
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值