[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
楼主
  发表于 2013-5-13 21:28:02  | 查看: 1616 | 回复: 12
编译MyQSL数据库驱动



版权声明

该文章原创于作者yafeilinux,转载请注明出处!




导语

在上一节的末尾我们已经看到,现在可用的数据库驱动只有两类3 种,那么怎样使用其他的数据库呢?在Qt 中,我们需要自己编译其他数据库驱动的源码,然后当做插件来使用。下面就以现在比较流行的MySQL 数据库为例,说明一下怎样在QtCreator 中编译数据库驱动。




环境: Windows Xp + Qt 4.8.4+Qt Creator2.6.2




目录

一、查看怎样编译数据库驱动
二、下载MySQL
三、安装MySQL
四、在MySQL 中创建数据库
五、编译MySQL 驱动
六、测试MySQL 程序


正文


一、查看怎样编译数据库驱动


1. Qt Creator 的帮助模式索引SQL Database Drivers 关键字,这篇文档里详细介绍了Qt 数据库的相关内容。


2. 我们在文档中定位到How to Build the QMYSQL Plugin on Windows 一段,这里讲解了怎样在Windows 下编译MySQL 驱动。如下图所示。
22-1.jpg


可以看到,主要分为两步,首先下载并安装MySQL ,在安装时要使用Custom Install 定制安装,安装上库Libs 和头文件Include Files ;然后是编译,注意在编译驱动前先添加上MySQL 的库和头文件。



二、下载MySQL


1. 我们先进入MySQL 的主页 http://www.mysql.com/ ,然后点击左上角的Downloads ,如下图所示。
22-2.jpg


2. 然后进入该页面最下面的MySQL Community Edition(GPL) 链接,我们使用遵循GPL 协议的开源版本。如下图所示。
22-3.jpg


3. 在新的页面我们选择左上角Downloads 按钮下面的Archives 选项,从档案中下载。如下图所示。
22-4.jpg


4. 在这个页面我们选择现在最新的 MySQLDatabase Server 5.6 版本。如下图所示。
22-5.jpg


5. 下面我们选择按照平台分类里的 MicrosoftWindows (34 files) 。如下图所示。
22-6.jpg


6. 这里我们下载最新版本的第二个链接 MicrosoftWindows 32. (Windows Installer format) (1 Feb 2013, 35.5M) ,如下图所示。

22-7.jpg


7. 下载后的最终文件为:mysql-5.6.10-win32 (大家也可以 下载 我们上传到网上的软件包,因为下面的操作只需要MyQSL 的库、头文件以及最基本的功能,所以我们下载了该版本)



三、安装MySQL


1. 运行下载的安装包,如下图所示。
22-8.jpg


2. 点击Next ,进入下一步,这里我们选择同意条款。如下图所示。

22-9.jpg


3. 接着Next ,下面我们选择定制安装Custom 。如下图所示。
22-10.jpg


4. 这里需要安装所有的头文件和库,点击Development Components 前面的下拉箭头,然后选择第二项。如下图所示。大家也可以看下右边的说明。
22-11.jpg


5. 然后选择下面的Browse… 来更改安装路径,这里设置为C:\MySQL\ ,如下图所示。

22-12.jpg


6. 填写完路径后点击ok 回到主页面,点击Next 来到新的页面,这里选择Install 来进行安装。如下图所示。
22-13.jpg


7. 等安装完毕后,点击Finish 完成安装。如下图所示。
22-14.jpg



四、在MySQL中创建数据库


1. 下面我们先在安装的MySQL 中创建一个数据库,用于后面的测试。首先到MyQSL 的安装目录C:\MySQL\bin 目录下运行mysqld.exe 程序,该程序运行完成后会自动关闭。如下图所示。

22-15.jpg


2. Windows 开始中点击“运行”,然后输入cmd ,进入终端后我们输入下面的命令:
cd C:\MySQL\bin
跳转到安装目录下。如下图所示。
22-16.jpg


3. 然后输入下面的命令:

mysql –uroot –p

我们使用root 用户来登陆MySQL ,因为默认密码是空的,所以这里不用设置密码。运行这行代码会提示Enterpassword ,我们这时敲回车即可。如下图所示。

22-17.jpg


4. 登录MySQL 以后,我们使用下面的命令来查看现有的数据库:

show databases

注意后面有个分号。如下图所示。
22-18.jpg



可以看到,这里现在已经有几个数据库了,他们是MySQL 需要的。如下图所示。

22-19.jpg


5. 我们不使用已经有的数据库,而是新建自己的数据库,下面新建名为mydata 的数据库:

create database mydata

如下图所示。
22-20.jpg



6. 我们再次查看已经存在的数据库,发现显示出了刚才创建的数据库,如下图所示。
22-21.jpg



7. 完成后,可以输入exit 退出MySQL

        这里只是简单介绍了一下在MySQL 中创建数据库的基本步骤,如果大家想学习更多的MySQL 的使用,请参考其他资料。




五、编译MySQL驱动


1. 我们进入Qt 安装目录的mysql 源码目录中,具体路径为(这里Qt 安装在了C 盘):
C:\Qt\4.8.4\src\plugins\sqldrivers\mysql
如下图所示。
22-22.jpg


2. 我们使用Qt Creator 打开里面的mysql.pro 项目文件。然后打开mysql.pro 文件,在最下面添加下面两行代码:

INCLUDEPATH   += C:/MySQL/include/
LIBS += -LC:/MySQL/lib/ -llibmysql

        这样便包含了MySQL 的库和头文件。如下图所示。
22-23.jpg

3. 现在我们使用左下角的锤子  22-24.jpg  按钮来构建项目。默认构建的是Debug 版本,会在Qt 目录的mysql 目录的同层目录里面生成构建目录,如下图所示。
22-25.jpg



里面的debug 目录里有我们需要的qsqlmysqld4.dll libqsqlmysqld4.a 文件,不过它们只用于开发Debug 版本的MySQL 程序。如下图所示。
22-26.jpg


4. 为了生成release 库,我们在Qt Creator 中运行按钮那里设置为编译Release 版本。如下图所示。
22-27.jpg


5. 下面再次按下锤子按钮来编译项目,就会生成“build-mysql- 桌面-Release ”样式的构建目录,里面包含了发布release 版本程序需要的dll 文件qsqlmysql4.dll


6. 我们将生成的qsqlmysql4.dll libqsqlmysql4.a qsqlmysqld4.dll libqsqlmysqld4.a 都复制到C:\Qt\4.8.4\plugins\sqldrivers 目录下,这是数据库驱动插件放置的目录。如下图所示。
22-28.jpg



六、测试MySQL程序

1. 新建Qt 控制台应用,名称为sqldrivers 。完成后在pro 文件中更改如下:
QT        += core   sql

2. 更改main.cpp 文件内容如下。
  1. #include <QCoreApplication>
  2. #include <QSqlDatabase>
  3. #include <QDebug>
  4. #include <QStringList>
  5. #include <QSqlQuery>

  6. int main(int argc, char *argv[])
  7. {
  8.     QCoreApplication a(argc, argv);
  9.     
  10.     // 输出可用数据库
  11.     qDebug() << "Available drivers:";
  12.     QStringList drivers = QSqlDatabase::drivers();
  13.     foreach(QString driver, drivers)
  14.         qDebug() << driver;
  15.     
  16.     // 打开MySQL
  17.     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  18.     db.setHostName("localhost");
  19.     db.setDatabaseName("mydata");
  20.     db.setUserName("root");
  21.     db.setPassword("");
  22.     if (!db.open())
  23.         qDebug() << "Failed to connect to root mysql admin";
  24.     else qDebug() << "open";
  25.     
  26.     QSqlQuery query(db);
  27.     
  28.     //注意这里varchar一定要指定长度,不然会出错
  29.     query.exec("create table student(id int primary key,name varchar(20))");
  30.     
  31.     query.exec("insert into student values(1,'xiaogang')");
  32.     query.exec("insert into student values(2,'xiaoming')");
  33.     query.exec("insert into student values(3,'xiaohong')");
  34.     
  35.     query.exec("select id,name from student where id >= 2");
  36.     
  37.     while(query.next())
  38.     {
  39.         int value0 = query.value(0).toInt();
  40.         QString value1 = query.value(1).toString();
  41.         qDebug() << value0 << value1 ;
  42.     }
  43.     
  44.     return a.exec();
  45. }
复制代码
        这里注意,创建表时varchar 一定要指定长度。现在运行程序,会出现如下图所示的结果:
22-29.jpg

这里提示MySQL 驱动没有加载。


3. 我们到C:\MySQL\lib 中将libmysql.dll 文件复制到C:\Qt\4.8.4\bin 中,然后再次运行程序,发现已经成功了,如下图所示。
22-30.jpg



结语

        Qt 中编译MySQL 数据库驱动的内容到这里就介绍完了。从下一篇开始,我们将以SQLite 数据库为范例来讲解Qt 数据库部分的应用。






涉及到的代码:  sqldrivers.zip (1.24 KB, 下载次数: 18) 



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
19天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
158 11
|
14天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
57 13
MySQL的安装&数据库的简单操作
|
8天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
9天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
8 2
|
4天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
14 2
|
9天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
22 4
|
18天前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
30 2
|
2月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~

推荐镜像

更多
下一篇
无影云桌面