Qt(5.12.0)64位如何连接mysql(8.0)64位

本文介绍了在Qt 5.12.0 64位环境下,由于QMYSQL驱动问题无法直接连接MySQL 8.0 64位数据库,最终采用ODBC方式成功建立连接。详细步骤包括修改.pro文件添加QT += sql,设置ODBC数据源,并提供了相应的实例代码。
摘要由CSDN通过智能技术生成

  1.首先说一下自己的经历,一开始我用了网上的实例代码,如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("managementsystem");
db.setUserName("root");
db.setPassword("root");
if (!db.open())
       cout<<"can't open!";
else
        cout<<"open!";

  2.然后出现了如下的问题

在网上查过后才发现这是因为没有在它的.pro文件中加入QT += sql

3.但是加入了以后,会出现这样的问题

然后又跑到了网上查了一通,发现网上的解决办法有如下两种:

   i:将mysql下的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下

  很高兴的以为要成了,没想到还是 QMYSQL driver not load,然后又从网上查了一下,自己有可能是这个版本

没有带驱动的原因,然后,我发现我这个版本的Qt带着驱动:

  这下子没招了,只能是一边问人一边接着查了,然后发现了方法ii

  方法ii: 因为Qt的驱动可能和mysql的版本不一样,所以需要重新编译,没办法,接着试吧:

这里我参考了QMYSQL driver not loaded 的原理和解决办法-CSDN博客的方法,不过在编译mysql.pro的时候

又出现了问题,我已经导入了include文件,还是mysql is not define这个错误,没脾气。然后又是试了网上所说的

手动编译,手动加载,甚至下载了32位的数据库和Qt,还是出现大一堆问题。

最终解决办法:使用ODBC连接mysql

    1.实例代码

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("mytest");
    db.setUserName("root");
    db.setPassword("root");
    if (!db.open())
       cout<<"can't open!";
    else
        cout<<"open!";
    MainWindow w;
    w.show();
    return a.exec();
}

      2.在.por文件中加入QT += sql

      3.添加ODBC数据源,在控制面板中找到管理工具,其中有ODBC数据源,我用的是64位的,打开后添加

    

    最上面的那个自己写一下,要和“db.setDatabaseName("mytest");”保持一致,然后终于成功了!超开心。

   

   

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值