QT6.3.1连接mysql报错问题

发布于:2023-01-22 ⋅ 阅读:(8) ⋅ 点赞:(0) ⋅ 评论:(0)

注意,此方法适用与qt6.3.1版本,因为之前所收集的方法不能解决该版本的所有情况,所以这篇文章就诞生了。

目录

1.确保必要文件

        (1)libmysql.dll和libmysql.lib

        (2)qsqlmysql.dll

                第一步

                第二步

                        (1).qmake.conf

                        (2)configure.pri和qsqldriverbase.pri

                        (3) mysql.pro

                第三步

可以直接下载qsqlmysql.dll


1.确保必要文件

        (1)libmysql.dll和libmysql.lib

在所下载好的mysql中找到libmysql.dll和libmysql.lib这两个文件

 将这两个文件放入进qt中min编译器下的bin目录中

同时把libmysql.lib文件复制一份出来放到其他非中文路径中。

我是放到这里

        (2)qsqlmysql.dll

              要获得这个文件需要qt编译出来,而qt6.3.1版本中缺失了一些文件需要补足。       

                第一步

一个src是6.3.1的源文件:

 这个文件可以在qt目录下的MaintenanceTool.exe程序中下载sources

 二个src文件是qt6.0.3版本的

这个版本在https://download.qt.io/archive/qt/6.0/6.0.3/single/

下载tar文件就行。

                第二步

从6.0.3版本的文件中找出以下文件。

                        (1).qmake.conf

 这个文件是要放进6.3.1的qtbase里面,因为我的没有,所以报错了。如果有,可以忽略。

                        (2)configure.pri和qsqldriverbase.pri

这两个文件也放入到如下位置

                        (3) mysql.pro

将这个文件放入如下文件中 

                第三步

用qtcreator打开mysql.pro文件,效果如下

修改mysql.pro

修改 qsqldriverbase.pri

 构建项目

如果顺利的话就能在

直接找到两个文件,

 

但,很遗憾的是,我第一遍成功缺无法复制出第二遍

编译器在构建的时候报错,整个语法是没问题的,应该是缺了什么东西。

 但好在以上两个文件我在第一遍的时候就保存下来了

如果大家遇到和我一样的问题,或者想要省事不想编译的话

可以直接下载qsqlmysql.dll

将qsqlmysql.dll文件放入到如下文件中

 然后测试

void OpeDB::init()
{
    qDebug()<<"available drivers:";
        QStringList drivers = QSqlDatabase::drivers();
        foreach(QString driver, drivers)
            qDebug()<<driver;
    m_db.setHostName("127.0.0.1");          //设置连接数据库的地此
    m_db.setPort(3306);
    m_db.setDatabaseName("my_online_disk"); //设置要操作的数据库
    m_db.setUserName("root");               //root用户
    m_db.setPassword("123456");             //密码
    bool ok = m_db.open();
    qDebug()<<ok;
        if (ok){
            qDebug()<<"ok";
        }
        else {
            qDebug()<<"error open database because"<<m_db.isOpenError();
        }


}

运行成功后输出如下