网上查阅Qt如何连接mysql数据库,多为新版本Qt(需要自己编译动态链接库),对旧版本Qt连接描述较少,回答也不甚清晰。
在QT中打印当前QT版本支持的数据库
为简便起见,新建一个Qt console application即可。
全部选择默认创建。
.pro文件中,添加
qt += sql
.cpp文件中,添加
#include <QDebug>
和
qDebug() << QSqlDatabase::drivers();
运行,在下方“3 应用程序输出”中查看结果,如下图所示,在旧版本Qt中,已经默认自带MySQL的动态链接库(结果中有“QMYSQL”)。
全部代码跳转此处查看(本文中除上述三条代码外未做任何改动)(也可以将如上三条语句放在任意已经存在的项目中)
库文件拷贝
确认该版本的Qt默认支持MySQL后,将MySQL安装目录下的lib文件夹中这两个库文件(如图所示)拷贝到QT安装目录的bin文件夹下。
检查是否可以成功连接数据库
使用如下代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
//链接数据库
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("123456");
db.setDatabaseName("mysql");
if(!db.open()){
qDebug() << "0";
}else{
qDebug() << "1";
}
将其添加至上面创建的main.cpp中。
需要注意的是,这样写,点击运行会导致程序异常退出。推测原因是程序还在等待操作的循环中,具体原因也不太清楚。发现若删除return a.exec();
代码,则变为每次重新运行时报错。读到return a.exec()
的具体含义解释文章,尝试在return a.exec()
之前添加exit(0)
,问题解决。
先在终端管理员中打开MySQL服务:
net start mysql
然后运行Qt项目,下方“3 应用程序输出”中输出0表示连接不成功,输出1表示连接成功。
若连接失败,可先尝试使用终端管理员查看能否登录数据库:
mysql -u your_username -p
全部代码跳转此处查看(和上面的全部代码传送门指向一个地方)