1.直接连接
在main函数中写入:
其中引入库 QSqlDatabase, QDebug。
数据库名是已经在mysql中建好的数据库。用户名和密码是数据库对应的。
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("数据库名");
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "success");
}
else {
QMessageBox::information(this, "infor", "open failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
在.pro文件中加
QT += sql
2.driver not loaded
2.1 查看是否有QMYSQL
//输出可用数据库
qDebug()<<"available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug()<<driver;
2.2.1 有,使用ODBC/connector
下载地址: MySQL :: Download Connector/ODBC
下载和QT同位的版本,如QT是Mingw32,则下载32位
下载时一直点击next即可。下载完之后在菜单中找到ODBC数据源
添加DSN,选择ANSI.
上面两个随意,填好用户名,密码和要连接的数据库(之前创建好)
代码修改成QODBC
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("是你在ODBC中创建的Data source name");
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "success");
}
else {
QMessageBox::information(this, "infor", "open failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
2.2.2 【或者】使用connector/C
MySQL :: Download MySQL Connector/C (Archived Versions)
下载和mysql相同位的版本,虽然不知道为什么我下的32位也可以。
解压后,将lib文件夹中的libmysql.dll与libmysql.lib复制到QT安装路径中的mingw53_32文件夹中;
连接代码不用改
3. SSL connection error
SSL connection error:ERROR 2026 (HY000): SSL connection error: unknown error number
cd 到mysql/bin中,登陆Mysql
mysql -u root -p
查看ssl情况
SHOW VARIABLES LIKE '%ssl%';
Have_ssl =YES
现在关闭SSL。
在program data(隐藏文件)中找到MYSQL->MYSQL server中的my.ini
在[mysqld]下面加入 skip_ssl
C盘的文件修改不了可以把他拖到桌面再改,再拖到C盘
4. caching_sha2_password
"Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模块。\r\nQMYSQL: Unable to connect"
改完SSL,又出现这个问题,原因是这个加密规则太高级了
重新登陆mysql发现密码过不了了,所以要调整修改顺序,先把my.ini改回来。再成功登录。
查看用户密码规则
use mysql;
select user, host, plugin from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '替换成你的密码';
‘root’是你的user名,‘%’是你的host名,自行替换。
改完之后检查:
select user, host, plugin from user;
最后
最后,终于成功连接呜呜。
感谢
ODBC: (34条消息) QT连接Mysql数据库(详细成功版)_普通网友的博客-CSDN博客_qt和mysql安装在不同的盘可以连上吗
connector/c: QT连接数据库,出现Driver not loaded Driver not loaded的问题的解决办法_qt_lyj_c-DevPress官方社区 (csdn.net)
ssl: ‘SSL connection error:unknown error number‘问题解决 - 知乎 (zhihu.com)