QT5.4中MySQL5.6驱动配置

在QT5.4中使用MySQL数据库时,先将MySQL Server 5.6装好;

然后在QT中使用MySQL时,在QT工程文件中加入:

QT += sql

INCLUDEPATH += /your/MySQL/root/dir/include
LIBS += /your/MySQL/root/dir/lib/libmysql.lib
要保证路径中不能有空格(有空格需要转义,没试过);

然后编译通过,运行时报如下错误:

QSqlDatabase: QMYSQL driver not loaded 
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC
这是QT中MySQL的驱动没有安装好,在网上有很多这个问题的解决方法,使用基本都能得到解决


qt由于授权许可的限制,Qt的开源版本没有提供所有数据库的驱动程序。免费下载的中只含有QSQLITE也就是SQLite的驱动程序,要想与mysql或oracle等连接需要自己编译其驱动。

1. 安装MySQL的步骤很简单,在官网上下载一个Installer,按提示就能完成,只是在路径选择时注意最好是路径中不包含空格,

mysql-installer-community-5.6.26.0.msi

2. 安装QT,我用的是QT5.4.0,相对QT4来说,安装过程简单了很多,直接下载安装包,按提示就能完成;

qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe

3. 安装MySQL驱动: 下载源码包: qt-everywhere-opensource-src-5.4.0.7z ;解压后进入 \qt-everywhere-opensource-src-5.4.0\qtbase\src\plugins\sqldrivers\mysql 文件夹中,这里就是MySQL驱动的QT工程,可以直接用QT打开工程,注意在工程文件中配置头文件路径和加载库路径:

	INCLUDEPATH += D:/DevTools/MySQL/MySQL_Server_5.6/include
	LIBS += D:/DevTools/MySQL/MySQL_Server_5.6/lib/libmysql.lib

但是编译时出现如下错误:

cannot find -llibmysql

error: ld returned 1 exit status

找不到共享库,查看release 和 debug 的 makefile 文件,发现:

LIBS  =  -llibmysql D:/DevTools/MySQL/MySQL_Server_5.6/lib/libmysql.lib -LD:/DevTools/Qt/Qt5.4.0/5.4/mingw491_32/lib -lQt5Sql -lQt5Core .obj\release\qsqlmysql_resource_res.o

这里只是指定了链接的库文件,而没有指定库文件的路径,手动将路径加入 

-LD:/DevTools/MySQL/MySQL_Server_5.6/lib/ 

然后重新编译通过,在  \qt-everywhere-opensource-src-5.4.0\qtbase\plugins\sqldrivers  目录下生成相应的库文件(看好,这不是本文件目录)

或者:

在工程文件中将 

	LIBS += D:/DevTools/MySQL/MySQL_Server_5.6/lib/libmysql.lib

改为:

	LIBS += -LD:/DevTools/MySQL/MySQL_Server_5.6/lib/ -llibmysql
重新 qmake,然后编译就能直接通过


4. 将这些库文件拷贝到  \Qt5.4.0\5.4\mingw491_32\plugins\sqldrivers 目录下

5. 将 MySQL_Server_5.6\lib 下的 libmysql.dll 拷贝到 \Qt5.4.0\5.4\mingw491_32\bin 目录下

到此完成。


测试:

#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"
	  "QMYSQL"
	  "QMYSQL3"
	  "QODBC"
	  "QODBC3"
	  "QPSQL"
	  "QPSQL7"
End

证明成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值