在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
证明成功。