目前刚学习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版本的,不同的版本的验证方式可能不一样