Qt连接mysql数据库

1 篇文章 0 订阅

Qt连接mysql数据库

QT和Mysql版本

Qt:5.14.2
Mysql:mysql-8.0.11-winx64
编译器:msvc2017_64

检查是否有驱动

\qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers
在这里插入图片描述

源码编译qmysql.dll文件

1.下载源码(路径不要有中文!)
源码下载
在这里插入图片描述
2.编译
找到5.14.2\qt-everywhere-src5.14.2\qtbase\src\plugins\sqldrivers\mysql,打开工程mysql.pro编译,会有两个报错:
Cannot read H:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.
3.解决报错
(1)Cannot read H:/qtsqldrivers-config.pri: No such file or directory
解决:打开qsqldriverbase.pri文件,将第四行注释掉,即#include($ s h a d o w e d ( shadowed( shadowed( $PWD)/qtsqldrivers-config.pri),然后添加include(./configure.pri),保存,完成。
(2)Project ERROR: Library ‘mysql’ is not defined.
解决:mysql.pro将第六行注释掉,这样:#QMAKE_USE += mysql
4.修改mysql.pro

TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#!!注意要注释掉
#QMAKE_USE += mysql  
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
#!!mysql的lib路径
LIBS += D:\mysql\mysql/lib/libmysql.lib
#!!mysql的include路径
INCLUDEPATH += $$quote(D:\mysql\mysql/include)
#!!mysql的include路径
DEPENDPATH += $$quote(D:\mysql\mysql/include)
include(../qsqldriverbase.pri)
#!!设置编译好的qmysql.dll放置的目录
DESTDIR = ../mysql/mysqlDll

5.注意
mysql路径一定不能有空格,我是安装到Program Files下的,重新复制了一份到其他地方,才可以生成!
6.复制dll到qt编译器
(1)将生成的两个dll放到Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
图一

图二
(2)将mysql/lib内的动态库文件libmysql.dll复制到Qt\Qt5.14.2\5.14.2\mingw73_64\bin
在这里插入图片描述

QT连接数据库

(1)新建QT项目
(2)在pro中添加QT += sql
在这里插入图片描述
(3)在头文件添加引用
在这里插入图片描述
(4)写代码

void MainWindow::on_pushButton_clicked()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setPort(3306);

    db.setDatabaseName("hax_dzdc");

    db.setUserName("root");

    db.setPassword("123456");

    if (!db.open()) {

        qDebug("Sql connect failed.");

        qDebug() << db.lastError().text();

        QMessageBox::warning(nullptr, "警告", "无法连接数据库");

    }
    else
    {
        qDebug("Sql connected.");
        QSqlQuery result = db.exec("select * from dzzhdc");
        for(int i=0; i<result.size(); i++)
        {
            result.next();
            qDebug() << result.value("id").toString()  << '\t' << result.value("name").toString() << '\t'
                     << result.value("type").toString() << endl;
        }
    }

}

(5)编译运行,成功
在这里插入图片描述

【参考网址】
[1]: https://blog.csdn.net/weixin_39912368/article/details/113116866
[2]: https://blog.csdn.net/qq_41603808/article/details/126139960

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值