Qt4.8.5编译mysql5.7.30驱动

来源:互联网 发布:openwrt 卸载软件命令 编辑:程序博客网 时间:2024/06/05 03:24
Qt由于授权许可的限制,Qt的开源版本没有提供所有数据库的驱动程序。免费下载的中只含有QSQLITE也就是SQLite的驱动程序,要想与mysql或oracle等连接需要自己编译其驱动。

      网上一找一堆的方法,最后成功的结果都是一样一样的,但是各种曲折的过程是不一样不一样的。

 一、提前安装MySQL和Qt

    1.MySQL版本5.7,安装mysql  安装时选择FUll型,这样会有库文件(include和lib文件夹)
    2.Qt版本4.8.5.


二、编译MySQL驱动

   1.将mysql安装目录下的include和lib两个文件夹拷贝到
    qt\4.8.5\src\plugins\sqldrivers\mysql下。可以自己新建一个目录如mysqllib。

     2.修改mysql.pro文件(位置:qt\4.8.5\src\plugins\sqldrivers\mysql),在第二行添加如下内容
          INCLUDEPATH += "./mysqllib/include"
          LIBS+= "./mysqllib/lib/libmysql.lib"

  3. 通过Qt 4.8.5 commad Prompt编译
    【曲折路线:1. cd命令一直更改不到c盘,一看原来安装了两次qt,一个在c盘,一个在D盘;2.nmake命令中出现问题,基本就是各种网络重定义,查找原因说应该是头文件      包含顺序问题,手动更改了 qt\4.8.5\src\sql\drivers\psql\qsq_psql.h,将包含windows.h的文件放在最后包含】
    依次输入命令:   
    cd c:\Qt\4.8.5\src\plugins\sqldrivers\mysql
    qmake mysql.pro
    nmake debug
    nmake release
 
文件编译成功后在c:\Qt\4.8.5\src\plugins\sqldrivers\mysql下的debug和release目录中会生成dll和lib文件。

三、文件搬移

1.  将 debug和release的libqsqlmysql4.lib,qsqlmysql4.dll 拷贝至
    c:\Qt\4.8.5\mingw\plugins\sqldrivers    目录下
2.将mysql的库文件libmysql.dll拷贝到库文件libmysql.dll拷贝到D:\Qt\4.8.5\bin目录下。
3.将 mysql下 bin 文件中libmysql.dll文件 拷贝到 system32 下面.【第一次忘记这个,driver一直不能加载】
第四步、验证

接下来运行一个例子看驱动是否装好:  

新建一个qt gui 控制台项目SQLtest  

在SQLtest.pro中加入QT  +=sql  【没找到pro文件,在qt选项create basic .proc\SHEGNC】

接着修改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();  


执行程序输出为:
Available drivers:        
"QSQLITE"        
"QMYSQL3"        
"QMYSQL"
"QODBC"        
"QPSQL7"
"QPSQL"
End
其中有"QMYSQL"则表示编译mysql的驱动成功了!!