第一步

1、准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码。安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\Qt5.0.0-rc2\5.0.0-rc2,而Qt5.0的解压路径为:C:\Qt\qt-5.0.1-src。

  注意事项:(1)安装mysql数据库的时候,网上很多教程说要选择自定义安装,并把lib和include这个选项选上。其实这个并不重要。因为我机器上很久前装mysql时选的是typical安装的,在安装目录下仍然可以找到lib和include这两个文件夹。安装方式并不重要。(2)Qt5.0是Qt的最新版本,在网上找到的编译方法都是基于Qt4.x的。我这里下载的是qt-windows-opensource-5.0.0-rc2-msvc2010_32-x86-offline.exe。这个安装包使用的是VC编译环境。因此,接下来的编译工作都是使用VS编译工具来编译的。(3)为什么要下载Qt5.0的源代码(qt-everywhere-opensource-src-5.0.1.zip)?因为我们要编译Qt连接mysql的驱动程序,需要使用一个mysql.pro文件。这个文件就在Qt5.0源代码中。其路径为(源码包的解压路径):C:\Qt\qt-5.0.1-src\qtbase\src\plugins\sqldrivers\mysql。具体的使用方式,我们在后面说明。

2、准备编译工作。选择开始->程序->Qt5.0.0-r2->5.0.0->MSVC2010->Qt5.0.0 for desktop(MSVC2010) prompt。我们在这个环境下使用qmake来生成编译程序的makefile文件。为什么要使用这个环境?因为,这个命令提示符已经为我们设置好了Qt库的环境,也即可以直接使用Qt库相关的工具。

第二步

(1)切换工作目录到:C:\Qt\qt-5.0.1-src\qtbase\src\plugins\sqldrivers\mysql。可以看到如下的几个文件存在:

其中,mysql.pro就是所要的文件。所以的编译工作都是从这个文件开始。

(2)使用qmake生成makefile自动编译。注意大小写不能错。其中,include和Lib就是上面说的Mysql安装目录下的两个文件夹。如下图所示:

     

(3)如果一切顺利,将在当前目录生成几个makefile文件和两个文件夹。如下图:

     

(4)接下来是重要的一部。如果我们直接在当前窗口输入make进行编译工作,那么很可能会出错,如:

更改数不胜数。这个时候,我们可以换另外一种方法,用VS2010的命令行环境来进行编译工作,在开始菜单中选择vs2010的一个命令行环境,切换到当前的工作目录下,执行nmake命令:

        

果然,出错了!错误显示缺少某个头文件。实际上,我们去mysql的安装目录include文件夹下查看,明显是可以找到这样一个头文件的。那么,怎么办呢?可以在命令行中用/I指示搜索路径。但是我们还是用最笨最简单的方法。直接将mysql安装目录下的include文件夹拷贝到Qt5.0的安装路径下。按照出错的提示,具体路径为:C:\Qt\Qt5.0.0-rc2\5.0.0-rc2\msvc2010\include\QtSql。(这里注意,不是Qt5.0源码的路径哦,而是Qt5.0的安装路径。)如果一切顺利,我们就会得到几个lib文件和dll文件。文件位于:C:\Qt\qt-5.0.1-src\qtbase\plugins\sqldrivers。这个文件夹下的文件都是编译生成的新文件。我们将该目录下的qsqlmysql.dll和qsqlmysqld.dll拷贝到C:\Qt\Qt5.0.0-rc2\5.0.0-rc2\msvc2010\plugins\sqldrivers目录下即可。配置工作至此完成。

第三步

连接。使用qt creator新建一个qt console项目,示例代码如下:

 1 #include <QCoreApplication>
2 #include <QtSql/QSqlDatabase>
3 #include <QtSql/QSqlQuery>
4 #include <QDebug>
5
6 int main(int argc, char *argv[])
7 {
8 QCoreApplication a(argc, argv);
9
10 QSqlDatabase con = QSqlDatabase::addDatabase("QMYSQL");
11 con.setHostName("localhost");
12 con.setDatabaseName("kxdl");
13 con.setPort(3306);
14 con.setUserName("root");
15 con.setPassword("root");
16 bool ret = con.open();
17 if(ret)
18 {
19 qDebug()<<"true"<<endl;
20 ret = false;
21 QSqlQuery qsql(con);
22 ret = qsql.exec("SELECT * FROM userInfo COUNT(*)");
23 if(ret = true)
24 {
25 qDebug()<<"true"<<endl;
26 }
27 else
28 {
29 qDebug()<<"false"<<endl;
30 }
31 }
32 return a.exec();
33 }

输出结果:

至此,编译工作自此成功结束。

http://www.cnblogs.com/csuftzzk/archive/2013/05/04/3060212.html

最新文章

  1. iOS学习——制作一个小型加法计算器
  2. Highcharts 的实际实践一
  3. metaprogramming笔记
  4. svn的使用!!!
  5. HDU 4651 Partition(整数拆分)
  6. TP第2个项目总结
  7. Android java程序获取assets资产文件
  8. 使用Broadcast实现android组件之间的通信 分类: android 学习笔记 2015-07-09 14:16 110人阅读 评论(0) 收藏
  9. SDK Manager无法启动
  10. git开源项目协作
  11. ThinkPhp调用webservice
  12. java中线程机制
  13. Java常用术语及区别
  14. python2.x 使用protobuf
  15. Js获取复选框checkbox的值
  16. java中 &amp; ^ ~ 的运算
  17. 机器学习之朴素贝叶斯&amp;贝叶斯网络
  18. Spring在web开发中的应用
  19. 转载: 一、linux cpu、内存、IO、网络的测试工具
  20. echart 3 数据密集时,断点不显示问题

热门文章

  1. Vue中this的绑定
  2. 【18.40%】【codeforces 631D】Messenger
  3. 重装huson遇到的一些错误及解决
  4. vuex与vue-router学习方案
  5. C# 异步和多线程
  6. Android-apktool反汇编异常-Input file (XXX) was not found or was not readable.
  7. POJ 1988 Cube Stacking (种类并查集)
  8. Java--垃圾收集算法及内存分配策略
  9. ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
  10. crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs