您的位置:首页 > 编程语言 > Qt开发

Qt5中配置MySQL

2020-02-17 05:08 399 查看

本人小白一枚,记录下自己的学习过程,还请大家多多批评指正。

1.查看Qt的版本

方法一:开始菜单的Qt5.11.3 for Desktop(MinGW 5.3.0 32 bit)表明Qt是32 bit的;
方法二:mingw53_32也表明Qt是32 bit的。

2.下载并安装MySQL

打开官网MySQL点击DOWNLOADS,

滑到页面下方点击MySQL Community (GPL) Downloads »,

然后进入并点击MySQL Installer for Windows,

从这里选择以前的版本

我选择的版本是5.7.28

然后点击不注册,直接下载,

下载之后是

接下来双击,开始安装程序,安装过程这里参考: MySQL5.7选择Developer Default,然后Next,中间还需要设置密码等操作。

安装完成界面:

3.验证登录MySQL

从开始菜单中找到MySQL中的MySQL5.7 Command Line Client –Unicode打开,

然后输入密码(安装过程中设置的密码),此时出现的界面表示成功安装,输入show databases;验证。

4.用MySQL创建数据库

以管理员身份进入cmd,然后输入net start MySQL57,显示请求的服务已启动;

然后输入mysql –u root –p报错,

解决办法:右击电脑—属性—高级系统设置—环境变量—双击用户变量里的Path

添加新的变量C:\Program Files\MySQL\MySQL Server 5.7\bin

然后再输入mysql -u root –p,输入密码,输入create database HelloWorld;
这时可以看到C:\ProgramData\MySQL\MySQL Server 5.7\Data(这是默认保存路径可修改)目录下生成了一个helloworld的database(数据库)。

5.查看MySQL版本及状态信息

在开始菜单打开命令行MySQL 5.7 Command Line Client - Unicode,输入密码之后,输入show variables like ‘%version_%’;即可。

输入status,显示MySQL的状态信息。

6.使用workbench可视化

从开始菜单找到MySQL中的MySQL Workbench 8.0 CE打开,单击灰色区域,输入密码,


进入可视化界面,workbench可视化平台是比较直观方便的。

7.Qt连接MySQL

在Qt中新建Empty qmake Project项目,命名为mysqlconnection,然后添加头文件connection.h和main.cpp文件。首先在.pro项目文件中添加一行代码QT+=sql widgets,然后往connection.h中添加如下代码:

#ifndef CONNECTION_H
#define CONNECTION_H
#include <QSqlDatabase>
#include <QMessageBox>
#include <qDebug>
#include <QSqlError>
//创建连接
static bool createConnection()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//添加一个默认连接,数据库驱动为QMYSQL
//设置主机名有两种方式
//db.setHostName("127.0.0.1");//设置主机名,从MySQL的Workbench中查看
db.setHostName("localhost");//设置主机名
db.setPort(3306);//设置端口
db.setDatabaseName("helloworld");//设置数据库名(这个数据库必须是已经存在的数据库)
db.setUserName("root");//设置用户名
db.setPassword("************");//设置密码(你自己的密码)
if(!db.open())
{
QMessageBox::critical(0,"Cannot open database",
"Unable to establish a database connection.",QMessageBox::Cancel);//提示出错
qDebug()<<db.lastError().text();//输出错误信息
return false;
}
else
{
QMessageBox::information(0,"Successfully","Establish a database connection",QMessageBox::Ok);//提示成功
}
return true;
}
#endif // CONNECTION_H

注意:这里的数据库是已经存在的数据库。SQLite是文件型数据库,可以在Qt中直接创建,但MySQL不是,MySQL需要额外安装数据库引擎,所以必须事先创建一个数据库,Qt才能创建与该数据库的连接。

然后往main.cpp中添加如下代码:

#include <QApplication>
#include <QDebug>
#include "connection.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
if(!createConnection())
return 0;
return a.exec();
}

运行程序报错:


原因一:缺少文件
解决办法:从C:\Program Files\MySQL\MySQL Server 5.7\lib中将libmysql.dll文件复制到C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin中,如下图所示:


然后运行程序,仍然报相同的错误。

原因二:Qt Creator(32 bit)与MySQL(64 bit)位数不统一

解决办法:

(1) 卸载当前64 bit的MySQL,重装32 bit的MySQL;(不推荐)

(2) 下载Qt源码文件,重新编译MySQL驱动;(不推荐),可参考大神文章https://segmentfault.com/a/1190000005691216

(3) 从官网connector-c下载32 bit的zip压缩包,我这里下载的是mysql-connector-c-6.1.11-win32.zip


(补充:MySQL Product Archives中提供各种MySQL产品的存档版本。基于旧版本软件的现有安装可能需要复制这些文件。)

在其lib文件夹下找到libmysql.dll和libmysql.lib两个文件,将它们复制到C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin目录下(如下图),然后重启Qt Creator后重新打开工程就可以正确运行了。


数据库连接建立成功结果为:

总之:必须保证libmysql.dll和libmysql.lib两个文件对应的MySQL位数与Qt的位数相同。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
data333 发布了2 篇原创文章 · 获赞 0 · 访问量 166 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: