Qt开发环境的搭建请参考网址:http://blog.csdn.net/fan_hai_ping/article/details/8273669
在使用MySQL数据库的时候,报如下错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITEQODBC3 QODBC QPSQL7 QPSQL
缺省情况下,对于QSqlDatabase可用的库有QSQLITEQODBC3 QODBC QPSQL7 QPSQL,如果需要使用MySQL库或者Oracle库就要自己进行手动编译,方法如下:
首先下载Mysql的开发库,下载网址如下:
http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip
然后解压缩文件到Qt安装目录下,修改目录名为mysql,现在开始编译MySQL驱动:
进入到D:\Qt\4.8.4\src\plugins\sqldrivers\mysql目录(QT SDK安装目录)下,找到mysql.pro文件,在第二行添加:
INCLUDEPATH +=D:/Qt/mysql/include
LIBS +=D:/Qt/mysql/lib/libmysql.lib
在该目录下执行qmake生成makefile文件:
qmake -oMakefile mysql.pro (或) qmake
执行make进行编译(VS使用nmake命令)Debug和Release版本:
make (or) nmake
nmake /fMakefile.Debug
nmake /f Makefile.Release
此时,会在当前目录下debug和release目录中生成dll和lib文件,把这些动态库文件(qsqlmysqld4.dll/lib和qsqlmysql4.dll/lib)拷贝到D:\Qt\4.8.4\plugins\sqldrivers目录下。
同时,也要把mysql/lib/libmysql.dll这个文件复制到qt的bin目录(D:\Qt\4.8.4\bin)下。
搭建开发环境需下载两个文件:
下载网址:http://www.oracle.com/technetwork/topics/winsoft-085727.html
instantclient-basic-nt-11.2.0.3.0.zip。这个包包含运行OCCI程序的动态链接库。
instantclient-sdk-nt-11.2.0.3.0.zip。这个包包含开发库的头文件、静态链接库以及occi示例程序。
注:在Oracle官网上下载文件时需要注册一个账号(free)。
解压缩instantclient-sdk-nt-11.2.0.3.0.zip,修改instantclient-sdk-nt-11.2.0.3.0为oracle,然后把oracle目录拷贝到QT安装目录D:\Qt下。
进入到D:\Qt\4.8.4\src\plugins\sqldrivers\oci目录下,修改oci.pro,添加下面两行:
INCLUDEPATH +=D:/Qt/oracle/instantclient_11_2/sdk/include
LIBS +=D:/Qt/oracle/instantclient_11_2/sdk/lib/msvc/oci.lib
执行qmake生成makefile项目,打开Makefile.Debug和Makefile.Release文件修改第18行,删除掉红色字体标注的oci.lib字符串:
LIBS = D:/Qt/oracle/instantclient_11_2/sdk/lib/msvc/oci.lib oci.lib
使用nmake进行编译生成Debug和Release动态库:
nmakerelease (or) nmake debug
此时,会在当前目录下debug和release文件夹中生成的动态库(qsqloci4.dll/.lib和qsqlocid4.dll/.lib),把它们拷贝到D:\Qt\4.8.4\plugins\sqldrivers目录下。
同时,把instantclient-basic-nt-11.2.0.3.0.zip压缩文件中的oci.dll提取到D:\Qt\4.8.4\bin目录中,这样QSqlDatabase可以正确的加载plugins\sqldrivers目录中的Oracle动态库。