Windows平台下编译Qt的MySQL数据库驱动

原创 2012年03月25日 00:50:11

       先吐个槽,弄了将近一天的时间才弄好,其实大概在一年之前弄个,不过当时没记录下来,导致现在又得再做一遍,可见博客是多么的重要啊!花了这么多时间主要是因为想从源码编译,大家都知道,编译一个Qt源码真心不容易啊,好久不能关电脑!!!好了,吐完了,说正事!

        最近最项目,选择了Qt和MySQL组合。之前一直在linux下做事,可惜这次要求环境是Windows,所以得重新搭建环境。首先安装Qt的开发环境,我直接选择的QtSDK,一个包安装到底就行;MySQL也是官网下载最新安装包安装的。两个部分单独测试过,都已经正常工作了!接下来就需要Qt操作MySQL了,这需要MySQL数据库驱动,QtSDK安装后只是自带了SQLite数据库的驱动,需要自己编译。我选择的编译工具是大名鼎鼎的MinGW,然后需要Qt源码包,我选择的版本是4.7.4。

       接下来就是编译了,感觉无从下手的时候最好就看看Qt的帮助文档,至于怎么使用Qt的帮助文档,可以看看上一篇博文,这里贴一下在帮助文档中搜索到的结果:

        这篇帮助文档里面非常详细的介绍了如何编译各种数据库的驱动,我们这里选择在Windows下编译MySQL数据库驱动。

         文档十分详细,基本都是步骤,我就翻译了,直接截图,大家一看就知道:

 

How to build the MySQL driver for MinGW users

The following steps have been used successfully for WinXP SP3. In this example, Qt 4.6.2 is shown.

  • Download the following components:
    • MinGW-5.1.6.exe
    • mingw-utils-0.3.tar.gz
    • Qt sources, e.g. qt-everywhere-opensource-src-4.6.2.zip
    • mysql-5.1.35-win32.msi
  • Install MinGW-5.1.6.exe in, e.g. C:\MinGW.
  • Extract mingw-utils-0.3.tar.gz into, e.g. C:\MinGW.
  • Add the path for MinGW-5.1.6.exe to your PATH variable, e.g. C:\MinGW\bin;
  • Extract the Qt sources, (qt-everywhere-opensource-src-4.6.2.zip), into, e.g. C:\Qt.
  • Add the path for the eventual Qt binary to your PATH variable, e.g. C:\Qt\4.6.2\bin;.
  • Install MySQL (mysql-5.1.35-win32.msi), customizing the components. Select only the headers and libraries. Install in, e.g. C:\MySQL\MySQL51.
  • Open the DOS prompt, go to C:\MySQL\MySQL51\lib\opt, and run the following commands:
    • reimp -d libmysql.lib
    • dlltool -k -d libmysql.def -l libmysql.a
  • Open the DOS prompt, go to C:\Qt\4.6.2 and run the following commands:
    • configure.exe -debug-and-release -platform win32-g++ -qt-sql-mysql -l mysql -I C:\MySQL\MySQL51\include -L C:\MySQL\MySQL51\lib\opt
    • mingw32-make sub-src

    This step takes a long time.

  • Open the DOS prompt, go to C:\Qt\4.6.2\src\plugins\sqldrivers\mysql and run the following command:
    • qmake "INCLUDEPATH+=C:\MySQL\MySQL51\include" "LIBS+=-L. mysql" mysql.pro
  • Now the following libraries are ready in C:\Qt\4.6.2\plugins\sqldrivers.
    • libqsqlmysql4.a
    • libqsqlmysqld4.a
    • qsqlmysql4.dll
    • qsqlmysqld4.dll

    To use the SDK and QtCreator directly, copy these libraries to your C:\Qt\...\qt\plugins\sqldrivers\, and copyC:\MySQL\MySQL51\lib\opt\libmysql.dll to your C:\Qt\...\qt\bin\.

         这里我贴一下自己编译完成后的文件,熟话说:有图有真相,呵呵!

          将生成的文件按照帮助文档说的,拷贝到相应的目录下;接下来我们在QtCreator里面写一个程序,测试一下我们的驱动是否可用:

          程序的功能是输出当前系统中Qt包含的数据库驱动;源码如下:

 
 
   
#include <QApplication>
#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);

    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug() << "\t" << driver;

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    qDebug() << "ODBC driver valid?" << db.isValid();
}

 程序输出结果如下:

         由上面输出我们可以看出:Qt自带的SQLite和我们自己编译的MySQL数据库的驱动都可以正常工作了,我们没有编译的ODBC数据库驱动就没有支持!

 

注意:

        为什么这么简单的东西我却花了将近一天的时间呢?这里说一下自己的思路和做法,避免大家走弯路,更让大家熟悉怎么编译Qt模块。

        最初我是直接编译Qt源码,没有利用已安装的Qt工具来模块化编译数据库驱动,这出现了两个问题:

         1、直接编译,花费很长时间才能编译完;若利用configure配置工具驱动一些模块后会编译报错,哎;

         2、这个时候指定MySQL头文件和库文件路劲比较纠结,可能是我对Windows不熟悉了,反正我觉得纠结。

         后来我才准备模块化编译的,这个确实比较简单,一会就弄完了,特别要注意上面要利用MinGW工具对MySQL库文件进行转换。

 

         好了,就到这吧!


相关文章推荐

windows平台下如何修改mysql数据库密码

首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,  所以一般用户无法更改密码,除非请求管理员。 方法一  使用phpmyadmin,这是最简单的了,修改my...

【Python】Windows平台下Python、Pydev连接Mysql数据库

Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb。 Python连接Mysql数据库是很简单的。 首先,你要配置好Python的开发环境,详见《【Python】Wind...

Windows平台下Codeblocks连接Mysql数据库

首先确认你已经安装了Mysql数据库 我这边的软件信息:Win7 32位旗舰版 + Codeblocks10.05 + Mysql 5.1 有两种方式可以选择,一种是全局的设置,这样无论创建什么项...
  • celte
  • celte
  • 2013年08月12日 00:36
  • 2599

Windows下编译Qt的MySQL数据库驱动

一、Windows下编译Qt 4.8的MySQL数据库驱动 问题:Windows下安装好Qt 4.8和MySQL 5.1数据库后,程序在Qt下访问MySQL数据库时出现错误提示:“QSqlDatab...

Windows下Qt驱动MySQL数据库

昨天是一场经过了如此纠结的MySQL数据库的卸载再安装的洗礼的一天,今天的在Windows下Qt驱动MySQL数据库也是历经千辛万苦才到达成功的彼岸的。虽然遇到了各种乱七八糟的问题,不过总算是圆满解决...

QT5.4下编译MySQL数据库驱动,并建立连接

在用QT5.4连接MySQL数据库时,会出现以下的错误: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drive...

QT编译Mysql数据库驱动

看到mysql的客服端,想着用QT做出个大概模型出来,首先的问题就是QT下的mysql驱动需要自己去编译,一直想着在QT上编译Mysql驱动,但是一直没实行或者遇到一点小问题又终止了。下午刚好对QT又...

Qt之编译MySQL数据库驱动(MSVC)

Qt之编译MySQL数据库驱动(MSVC) (2013-12-13 20:24:46) 转载▼ 标签: qt mysql qmysql qt编译mysql qt...
  • yihui8
  • yihui8
  • 2014年08月03日 18:40
  • 806

Qt 5.4.1下编译MySQL驱动,连接MySQL数据库

Qt 5.4.1下编译MySQL驱动,连接MySQL数据库
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows平台下编译Qt的MySQL数据库驱动
举报原因:
原因补充:

(最多只允许输入30个字)