抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

网上查阅Qt如何连接mysql数据库,多为新版本Qt(需要自己编译动态链接库),对旧版本Qt连接描述较少,回答也不甚清晰。

在QT中打印当前QT版本支持的数据库

为简便起见,新建一个Qt console application即可。

Qt_console_App

全部选择默认创建。

.pro文件中,添加

qt += sql

.cpp文件中,添加

#include <QDebug>

qDebug() << QSqlDatabase::drivers();

运行,在下方“3 应用程序输出”中查看结果,如下图所示,在旧版本Qt中,已经默认自带MySQL的动态链接库(结果中有“QMYSQL”)。

结果中有“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

全部代码跳转此处查看(和上面的全部代码传送门指向一个地方)

评论

评论区不是无人区喵