本人小白一枚,记录下自己的学习过程,还请大家多多批评指正。
方法一:开始菜单的Qt5.11.3 for Desktop(MinGW 5.3.0 32 bit)表明Qt是32 bit的; 方法二:mingw53_32也表明Qt是32 bit的。
打开官网MySQL点击DOWNLOADS, 滑到页面下方点击MySQL Community (GPL) Downloads », 然后进入并点击MySQL Installer for Windows, 从这里选择以前的版本 我选择的版本是5.7.28 然后点击不注册,直接下载, 下载之后是 接下来双击,开始安装程序,安装过程这里参考: MySQL5.7选择Developer Default,然后Next,中间还需要设置密码等操作。 安装完成界面:
从开始菜单中找到MySQL中的MySQL5.7 Command Line Client –Unicode打开, 然后输入密码(安装过程中设置的密码),此时出现的界面表示成功安装,输入show databases;验证。
以管理员身份进入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(数据库)。
在开始菜单打开命令行MySQL 5.7 Command Line Client - Unicode,输入密码之后,输入show variables like ‘%version_%’;即可。 输入status,显示MySQL的状态信息。
从开始菜单找到MySQL中的MySQL Workbench 8.0 CE打开,单击灰色区域,输入密码, 进入可视化界面,workbench可视化平台是比较直观方便的。
在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的位数相同。