win下Qt连接MySql (mingw)

来源:互联网 发布:mac版本升级 编辑:程序博客网 时间:2024/04/28 14:26

/************************************************************************************************************************************

因为要写个连接mysql的动态库,所以研究了下win下Qt连接MySql (mingw)。网上搜了下,qt中没有现成的mysql驱动,所以必须自己动手编译

下文所用环境

操作系统:win7

    编译器:mingw

     mysql: mysql5.5

            Qt:4.6.3

 这里需要一个mingw工具reimp 是一个把 .lib 转换成.a 的工具, 后面会说那里用到。

下载地址:http://www.qtcn.org/download/mingw-utils-0.3.tar.gz

参考连接:

     http://mobile.51cto.com/symbian-268727.htm

注:本环境只是简单的把mingw 和qt底下的bin 加入到了path环境变量中,其他没有配什么,所以不需要担心这方面

*************************************************************************************************************************************/

Qt Assistant中搜索下:

会看到,里面已经有说明,不过太精炼,真正做的时候总是因为这或那,搞的你头大。

我安装工具的路径

       Qt:C:\Qt\2010.04\qt

mysql:C:\MySQL\MySQL Server 5.5

下面一步一步讲:

1.因为mysql如果是默认安装,文件名是有空格的,所以我在d:/下创目录  mysql

2.把C:\MySQL\MySQL Server 5.5\include  C:\MySQL\MySQL Server 5.5\lib  都拷贝到 d:\mysql中

3.qt助手里说的是用 libmysql.lib 和nmake来编译,我看其他资料上说是没问题,但是 mingw是linux下的环境 需要libmysql.a的。 所以需要用到reimp工具来进行转换

    如果你的mingw/bin中没有,那么上面有下载地址,下载解压后,把reimp拷贝到 mingw/bin下

         ctrl+r  输入 cmd   回车

 命令:

        cd d:\mysql\lib

reimp -d libmysql.lib

dlltool -k -d libmysql.def -l libmysql.a

    执行完后,在d:\mysql\lib 中应该有libmysql.a文件了


4.因为有些环境变量没配,所以这里需要打开 Qt command Prompt 。细心的话你会发现打开Qt command Prompt时,它会设置一些环境变量。

    命令:

1.  cd %QTDIR%\src\plugins\sqldrivers\mysql

2.  qmake -o Makefile "INCLUDEPATH+=D:\mysql\INCLUDE" "LIBS+=D:\mysql\LIBMYSQL.a" mysql.pro

 

3.  mingw32-make


执行到这里,如果没有提示错误,那么就说明成功了。去C:\Qt\2010.04\qt\plugins\sqldrivers 会看到

  1. qsqlmysql4.dll   
  2. libqsqlmysql4.a  
  3. qsqlmysqld4.dll   
  4. libqsqlmysqld4.a  
说明成功了


下面创建一个qt empty project 别忘了在 pro文件里添加 

QT += sql


main.cpp

#include <QtCore/QCoreApplication>#include <QtSql>int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    qDebug() << "Available drivers:";       QStringList drivers = QSqlDatabase::drivers();       foreach(QString driver, drivers)           qDebug() << "\t "<< driver;    qDebug() << "End";    return a.exec();}

执行结果



希望这篇对你有帮助















原创粉丝点击