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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
楼主
  发表于 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
相关文章
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
11天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
52 4
|
17天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
21天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
93 4
|
19天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
35 0
【入门级教程】MySQL:从零开始的数据库之旅
|
6天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
37 0
|
7天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
34 0
|
16天前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
71 0
|
16天前
|
存储 SQL 关系型数据库
MySQL Workbench支持哪些数据库引擎
【10月更文挑战第17天】MySQL Workbench支持哪些数据库引擎
13 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
173 1
Qt(C++)开发一款图片防盗用水印制作小工具

推荐镜像

更多