栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据

Qt连接mysql数据库,解决缺少数据库驱动问题,操作数据库读写

大数据 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt连接mysql数据库,解决缺少数据库驱动问题,操作数据库读写

简介

从零开始 一步步完成Qt连接Mysql数据库,解决Qt连接数据中遇到的如下报错的问题。

QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

环境:Qt 5.12.2+MySQL8.0.26(安装版)+msvc2019_64编译器
Qt从5.12版本后不在自带MySQL数据库的连接驱动,需要手动编译,编译之前你的先安装MySQL,和安装qt源码。默认你已经安装好了MySQL和安装qt源码

一、编译
进入qt安装目录,然后找到Srcqtbasesrcpluginssqldriversmysql,
我的路径为:D:Qt5.15.2Srcqtbasesrcpluginssqldriversmysql

打开路径下的mysql.pro,x修改内容如下:

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
include(../qsqldriverbase.pri)

INCLUDEPATH += "C:Program FilesMySQLMySQL Server 8.0include"  #mysql头文件
LIBS += "C:Program FilesMySQLMySQL Server 8.0liblibmysql.lib" #mysql库文件
DESTDIR = ../mysql/lib/             # 库生成路径

将MySQL头文件和MySQL库文件路径替换成你的安装路径,然后先执行qmake,在点击构建如果不报错的话就能 在指定目录下生成链接MySQL的库(我这里生成在…/mysql/lib/),复制目录下的库文件到qt安装目录5.12.2msvc2019_64pluginssqldrivers(我的为:D:Qt5.15.2msvc2019_64pluginssqldrivers)
注意:编译时所用的编译器和最后库放的路径要对应起来,例如使用msvc2019_64编译,生成的库也需要放到msvc2019_64路径下的pluginssqldrivers,使用mingw编译也同理

到这一步之后运行程序,QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 中会多了QMYSQL QMYSQL3 这说明mysql的驱动已经有了。

 最后将MySQL安装目录下的lib下的libmysql.dll库文件复制到对应编译器的bin目录下(eg: C:QtQt5.12.25.12.2msvc2019_64bin)到了这里理论上已经可以连接数据库了,如果还提示缺少驱动,强烈建议重启电脑再试,强烈建议重启电脑再试,强烈建议重启电脑再试。我查了一天的资料包括自己后面的尝试,可以很明确的告诉你 所有Qt连接mysql需要的东西和步骤都做完了。重启之后如果还不行删除mysql重新走一遍流程,如果是免安装包的 下载个安装包版本的试一试,参考如下教程。如果原来是64位的mysql就试一下32位的。 我就是在这里白白浪费了一天时间,其实所有步骤都是对的。

Windows10 MYSQL Installer 安装(mysql-installer-community-5.7.19.0.msi) | 菜鸟教程

操作数据库

创建项目,在pro中添加QT+=sql,写入如下

//输出可用数据库
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()< 

 连接Mysql

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("数据库名");
    db.setUserName("用户名");
    db.setPassword("密码");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"< 

其他有用的参考文档:

QMYSQL driver not loaded 的原理和解决办法 - lpx15312 - 博客园

Qt链接MySQL遇到的坑_十里春风_jzh的博客-CSDN博客

不用mysql驱动的方法:

Qt连接MySQL数据库最详细的教程_joey_ro的博客-CSDN博客

如果本文对你有帮助,就给个三连吧,ღ( ´・ᴗ・` )比心

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号