QT5访问MYSQL8.0.21数据库

目前刚学习QT5访问mysql数据库,遇到了一些问题。做一下记录,以帮助后面遇到类似问题的朋友。
环境:Windows 10 + Qt 5.8.0(包含Qt Creator 4.2.1)
mysql-8.0.21-winx64(非zip版本)


一、MYSQL数据库是什么?

MySQL是一个非常流行的关系型数据库,也是使用标准的SQL语言进行数据库的操作。在Qt 5中已经提供了对MySQL数据库的默认支持,要想使用该数据库,需要先进行数据库的安装。

二、操作步骤

1.访问MYSQL的程序

代码如下:

    // 打开MySQL
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("mydata");
    db.setUserName("root");  //需要修改为自己的账号
    db.setPassword("123456");//需要修改为自己的密码
    if (!db.open()) qDebug() << "连接失败";
    else qDebug() << "连接成功";

    QSqlQuery query(db);

    //注意这里varchar一定要指定长度,不然会出错
    query.exec("create table student(id int primary key,name varchar(20))");

    query.exec("insert into student values(1,'xiaogang')");
    query.exec("insert into student values(2,'xiaoming')");
    query.exec("insert into student values(3,'xiaohong')");

    query.exec("select id,name from student where id >= 2");

    while(query.next())
    {
        int value0 = query.value(0).toInt();
        QString value1 = query.value(1).toString();
        qDebug() << value0 << value1 ;
    }

2.复制DLL库到QT的安装目录下

因为我使用的是32位的Qt,所以需要32位的libmysql.dll。我下载mysql是64位的版本,所以我又从网上已经找到了32位的DLL(实测有效),百度网盘下载链接:https://pan.baidu.com/s/1AEDZ7JsLwBPOU5ZlhqPliw 提取码: 2jmv 。下载好后,拷贝到qt安装目录下的bin目录。
如果使用的QT是64位的,可以直接找mysql-8.0.21-winx64里的libmysql.dll,然后拷贝到qt安装目录下的bin目录里。我的libmysql.dll是在mysql-8.0.21-winx64\lib目录下,放到C:\Qt\Qt5.8.0\5.8\mingw53_32\bin目录下。


3.修改MYSQL的验证方式

因为我上面使用的MySQL是8.0版本的,而从百度网盘分享的.dll是5.x版本的,8.0版本的验证方式和5.X的方式又不一样,所以需要修改验证方式。
修改的指令:ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ‘123456’;
其中123456是密码,如果要使用该指令,需要将密码改为你自己的实际密码。另外最后的分号一定要加上,最后的分号一定要加上,最后的分号一定要加上。


三、总结

1.需要注意QT与调用的DLL的版本是否一致(32位与64位的区别)
2.需要注意DLL库是基于哪个MYSQL版本的,不同的版本的验证方式可能不一样

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值