由于毕设需要用到 QT 读取数据库中的数据, 并将数据保存至数据库中. 花了一天的时间, 总算实现了从 QT 中读取数据库中的数据. 网上相关资料很多, 但是写得不是很全, 中间出现了一些问题, 解决起来比较麻烦. 所以本文从 MYSQL 下载, 安装, QT 连接 MYSQL 尽可能写详细, 若有不足, 还请见谅.
1,QT5.5 下载
本文使用的 windows32 QT5.5 版本为 (qt-opensource-windows-x86-mingw492-5.5.10), 可从我的百度云: https://pan.baidu.com/s/1XsVmgd3Qd-J0BHPVOtMVkA 下载
若选用高版本, 具体安装方法可自行百度.
2,MYSQL5.6 下载
由于 QT 选用的 Windows32 位, 所以 MYSQL 也应选择 Windows32 位版本为 mysql-5.6.39-win32.zip.(若 QT 选择的为 Windows64 位, 则 MYSQL 应选择 Windows64 位),
可从我的百度云: https://pan.baidu.com/s/1XsVmgd3Qd-J0BHPVOtMVkA 下载.
若选用高版本, 具体下载方法可自行百度.
3,MYSQL5.6 安装
1) 将 mysql-5.6.39-win32.zip 解压至 D 盘中的 MYSQL SERVER, 且重命名为 mysql-5.6. 解压修改后的结果如图 1-1 所示.
图 1-1
2) 修改 my-default.ini, 修改后如图 1-2 所示
图 1-2
3) 增加环境变量. 右键我的电脑, 点属性, 点高级系统设置, 点环境变量, 在 PATH 中添加 ;D:\MYSQL SERVER\mysql-5.6\bin(分号不要忘了, 根据自己的安装目录改写), 点击确认就行.
4) 在 C 盘中找到 cmd.exe, 并以管理员权限打开. 分别执行以下指令:
- d:
- cd MYSQL SERVER\mysql-5.6\bin
- mysqld -initalize -user=mysql -console
mysqld -install, 输入该指令后会打印 Service successfully installed
net start mysql, 输入该指令后会打印 MySQL 服务已经启动成功. 至此 MYSQL5.6 已经安装成功, 并且已运行.
4,MYSQL 登陆与修改密码
1) 在 cmd.exe 软件中, 继续输入 SQL 相关指令:
mysql -u root -p, 输入该指令后出现 Enter password: , 第一次登陆直接回车, 进入 mysql 软件. 如图 1-3
图 1-3
2) 增加 root 的密码.
mysql> set password for root@localhost=password('88888888');
输入该指令后 ront 的密码变为 88888888.(在编写 QT 程序中需要用到用户名为 root 和密码为 88888888)
mysql>exit
输入该指令后退出.
重新登陆, 输入 mysql -u root -p, 输入该指令后出现 Enter password: , 输入 88888888. 若输入密码不是 88888888, 则会出现报错, 如图 1-4 所示
图 1-4
3) 添加测试表, 在 test 库中添加 student 表, 并添加一些数据. 具体操作如图 1-5 所示, 至此 MYSQL 部分已经全部完成.(注意是在 test 库中添加, 对应 QT 应选择 test;
图 1-5
5, 建立 QT 程序
1) 将 mysql-5.6 文件 lib 目录下的 libmysql.dll 和 libmysqld.dll 复制到 Qt5.5 中的 mingw493_32 的 bin 文件下. 如图 1-6 所示;
图 1-6
2) 新建项目, 选择 QT Console Application. 命名项目名为 sql_test;
在 sql_test.pro 文件中添加 QT +=sql
main.cpp 改为
- #include <QCoreApplication>
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QtDebug>
- void connect_mysql()
- {
- QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
- db.setHostName("127.0.0.1"); // 连接数据库主机名, 这里需要注意 (若填的为 "127.0.0.1", 出现不能连接, 则改为 localhost)
- db.setPort(3306); // 连接数据库端口号, 与设置一致
- db.setDatabaseName("test"); // 连接数据库名, 与设置一致
- db.setUserName("root"); // 数据库用户名, 与设置一致
- db.setPassword("88888888"); // 数据库密码, 与设置一致
- db.open();
- if(!db.open())
- {
- qDebug()<<"不能连接"<<"connect to mysql error"<<db.lastError().text();
- return ;
- }
- else
- {
- qDebug()<<"连接成功"<<"connect to mysql OK";
- }
- QSqlQuery query(db);
- query.exec("select * from student");
- while(query.next()){
- qDebug()<<query.value("name").toString();
- }
- }
- int main(int argc,char *argv[])
- {
- QCoreApplication a(argc,argv);
- connect_mysql();
- return a.exec();
- }
3) 测试结果
图 1-7
结果表明, QT 已经成功读取 MYSQL 中的 student 表.
可以在 https://github.com/xtuwang/Qt_stduy.git 中下载该项目.
来源: https://www.cnblogs.com/xtu-wlf1212/p/8764015.html