在QT中使用MySQL数据库

前篇已经写了如何使用QT链接sqlite和SQLServer,见点击打开链接

本次主要说明如何通过QT链接MySQL数据库;

首先确保数据库中存在Mysql的驱动,详见QT安装目录中的plugins/sqldrivers文件夹下是否存在qsqlmysql.dll文件。


首先在xxx.pro工程文件中添加

[cpp]  view plain  copy
  1. QT       += sql  

具体代码如下:

[cpp]  view plain  copy
  1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  
  2.  //   db.setDatabaseName("my.db");  
  3.     db.setHostName("128.110.110.110");  
  4.     db.setPort(3306);  
  5.     db.setDatabaseName("database");  
  6.     db.setUserName("root");  
  7.     db.setPassword("hello123");  
  8.     if (!db.open()) {  
  9.         QMessageBox::critical(0, "Cannot open database1",  
  10.                               "Unable to establish a database connection.", QMessageBox::Cancel);  
  11.         return false;  
  12.     }  
如果可以正常打开和读取数据库,则说明链接成功。

注意:有时候存在即使有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的命令行,如图:


然后执行:

[cpp]  view plain  copy
  1. cd C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\plugins\sqldrivers\mysql\  
[cpp]  view plain  copy
  1. qmake "INCLUDEPATH+=C:\MySQL\MySQLServer5.5\include" "LIBS+=C:\MySQL\MySQLServer5.5\lib\libmysql.lib" -o Makefile mysql.pro  
[html]  view plain  copy
  1. mingw32-make  
如果没有错误,则编译成功,可以在\Src\qtbase\plugins\sqldrivers该文件夹下发现已经生成动态链接库,将其拷贝之\mingw491_32\plugins\sqldrivers中替代之前QT自带的Mysql驱动。

然后将Mysql的动态链接库

[cpp]  view plain  copy
  1. C:\MySQL\MySQLServer5.5\lib\libmysql.lib  
拷贝至系统中或者\mingw491_32\bin中即可。

大功告成。开始QT的Mysql之旅吧。


致谢

1、在QT中使用MySQL数据库

猜你喜欢

转载自blog.csdn.net/qq_38880380/article/details/80732620