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

  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.然后出现了如下的问题

Qt(5.12.0)64位如何连接mysql(8.0)64位_第1张图片在网上查过后才发现这是因为没有在它的.pro文件中加入QT += sql

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

Qt(5.12.0)64位如何连接mysql(8.0)64位_第2张图片

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

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

Qt(5.12.0)64位如何连接mysql(8.0)64位_第3张图片

Qt(5.12.0)64位如何连接mysql(8.0)64位_第4张图片

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

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

Qt(5.12.0)64位如何连接mysql(8.0)64位_第5张图片

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

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

这里我参考了https://blog.csdn.net/m15814478834/article/details/49902077的方法,不过在编译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位的,打开后添加

Qt(5.12.0)64位如何连接mysql(8.0)64位_第6张图片

    Qt(5.12.0)64位如何连接mysql(8.0)64位_第7张图片

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

   

   

你可能感兴趣的:(Qt(5.12.0)64位如何连接mysql(8.0)64位)