前篇已经写了如何使用QT链接sqlite和SQLServer,见点击打开链接
本次主要说明如何通过QT链接MySQL数据库;
首先确保数据库中存在Mysql的驱动,详见QT安装目录中的plugins/sqldrivers文件夹下是否存在qsqlmysql.dll文件。
首先在xxx.pro工程文件中添加
QT += sql
具体代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// db.setDatabaseName("my.db");
db.setHostName("128.110.110.110");
db.setPort(3306);
db.setDatabaseName("database");
db.setUserName("root");
db.setPassword("hello123");
if (!db.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}
如果可以正常打开和读取数据库,则说明链接成功。
注意:有时候存在即使有Mysql的驱动,仍然报错
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
此时说明QT中自带的Mysql的驱动不依赖,需要自己重新编译。方法如下:当然可以参考这里点击打开链接
先去官网下载https://dev.mysql.com/downloads/connector/c/
文件是mysql-connector-c-6.1.10-win32(当然选择适合自己操作系统的压缩包)
之后解压,在路径中不要存在中文和空格,然后进入QT的安装源码目录中找到mysql的源码,进行编译,
具体位于\Src\qtbase\src\plugins\sqldrivers\mysql该处,之后打开QT的命令行,如图:
然后执行:
cd C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\plugins\sqldrivers\mysql\
qmake "INCLUDEPATH+=C:\MySQL\MySQLServer5.5\include" "LIBS+=C:\MySQL\MySQLServer5.5\lib\libmysql.lib" -o Makefile mysql.pro
mingw32-make
如果没有错误,则编译成功,可以在\Src\qtbase\plugins\sqldrivers该文件夹下发现已经生成动态链接库,将其拷贝之\mingw491_32\plugins\sqldrivers中替代之前QT自带的Mysql驱动。
然后将Mysql的动态链接库
C:\MySQL\MySQLServer5.5\lib\libmysql.lib
拷贝至系统中或者\mingw491_32\bin中即可。
大功告成。开始QT的Mysql之旅吧。