首先,打开ODBC,并添加数据源
点击添加,选择Mysql ODBC 8.0 ANSI Driver
(如果没有的话需要下载相应的驱动)
Data Soure Name填写自定义的数据源名称,后面连qt会用到
TCP/IP Server 填写你的服务器IP地址(如果本地的话就写127.0.0.1)
User 填写用户名(一般不要填root)
Password填写密码
Database:注意这里!别点下拉框,会卡死,直接输入你在mysql中创好的数据库,然后点test
如果成功会出现成功的弹窗。
然后我们就可以在qt中使用Mysql了
创建一个项目
在.pro文件中加入如下一行:
qt += sql
在.cpp中包含以下头文件:
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
随后可以连接数据库:
QSqlDatabase db;
if(QSqlDatabase::contains("str1")){
db = QSqlDatabase::database("str1");
}else{
db = QSqlDatabase::addDatabase("QODBC","str1");
}
db.setHostName("IP");
db.setPort(3306);
db.setDatabaseName("数据源名称");
db.setUserName("用户");
db.setPassword("密码");
db.open();
QSqlQuery query(db);
QString sql_1 = "select * from 用户表";
query.exec(sql_1);
while (query.next())
{
qDebug()<<query.value(0).toString();
qDebug()<<query.value(1).toString();
qDebug()<<query.value(2).toString();
}
db.close();
QSqlDatabase::removeDatabase("str1");
注:
str1里面可以写自定义的名字,不过要保持一致,比如在本例中的str1
IP写你在ODBC中添加的IP
数据源名称写你在ODBC中定义的数据源名称
用户写你在ODBC中使用的用户名
密码写你在ODBC中使用的密码
QSqlQuery query(db)的意思是将query绑定到db上
QString sql_1可任意定义一条数据库语句,字符串可以拼接,灵活运用
query.exec(sql_1)将sql_1的语句传递给数据库
接下来就是如何接收查出来的值:
while(query.next())表示一直展示完查询的数据
query.value(0).toString()是第一个表头的数据
query.value(1).toString()是第二个表头的数据
本例中是将这些数据输出了,你可以用字符串来接收这些数据,然后进一步处理
最后,不要忘了关闭数据库
db.close表示连接断开
QSqlDatabase::removeDatabase("str1")表示将str1从数据库的临时连接去掉,你就可以反复使用str1这个名字而不会报错了
对啦!还有一点,编译的时候需要保持编译环境和ODBC环境一样
比如这里的ODBC是64位的
就需要保持QT的编译环境也是64位的