Qt6 连接 MySql数据库

前言

教程参考:
http://t.csdnimg.cn/wKAk3
Qt6 是没有mysql驱动是要自己安装的,而且在 Qt6 是没有.pro文件,只能用cmake进行编译,特别的坑。
我也是被坑惨了,还去傻乎乎地找.por文件,整了半天。

必看

这个教程是针对Qt6的,如果用的是Qt5,则不适用!
在连接前要先安装Mysql,可以参考
http://t.csdnimg.cn/zRlUe

正文

下载驱动

  • 找到对应Qt版本的驱动,下载解压
    https://github.com/thecodemonkey86/qt_mysql_driver/releases
  • libcrypto-1_1-x64.dlllibmysql.dlllibssl-1_1-x64.dll这3个文件复制到D:\Qt\6.4.2\mingw_64\bin文件夹中
  • 再将解压缩后中的sqldrivers的两个mysql驱动文件复制到D:\Qt\6.4.2\mingw_64\plugins\sqldrivers

调整代码

在CMakelists.txt 文件中

  • 找到find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
    替换为find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)
  • target_link_libraries(filename PRIVATE Qt$ {QT_VERSION_MAJOR}::Widgets)后面添加一行
    target_link_libraries(filename PRIVATE Qt${QT_VERSION_MAJOR}::Sql)
    里面的 filename 就是文件名,要一致

连接 Mysql 数据库

检测 Mysql 驱动

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

如果输出中含有MySQL,那么恭喜你说明你的qt有MySQL驱动了,可以进行下一步。

连接

!!!注意是连接数据库,要保证已经创建过该数据库才能链接。
创建数据库的操作 在安装链接中也有(用的图形化界面),也可以参考这个:
http://t.csdnimg.cn/GyNr9

在自己工程的cpp文件中加入

#include<QSqlDatabase>
#include<QDebug>
 
void MainWindow::on_pushButton_clicked()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");  //连接本地主机
    db.setPort(3306);
    db.setDatabaseName("db_name");  //Mysql 创建的数据库名称
    db.setUserName("root");
    db.setPassword("123456");    //安装 Mysql 设置的密码
    bool ok = db.open();
    if (ok){
         qDebug() << "link success";
    }
    else {
         qDebug() <<  "link failed";
    }
}

测试输出link success,连接成功。

直接创建数据库使用

    //创建数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库名字
    db.setDatabaseName("login.db");
    //打开数据库
    if(db.open())
    {
        qDebug()<<"打开数据库成功"<<endl;
    }else
    {
        qDebug()<<"打开数据库失败"<<endl;
    }

成功后会在目录下生成.db文件

posted @   study_all_day  阅读(925)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示