Qt 5 链接MySQL

  Qt 访问 MySql 需要 2 个库文件,一个是 Qt 自己的 MySql 驱动插件,另一个是 MySql 的动态链接库,缺一不可。在 Qt 程序里加载 MySql 驱动插件,其依赖于MySql 的动态链接库。
    在windows下,使用Qt 5链接mysql应该是一件比较简单的事,但是,linux下却不见得如此。
背景介绍:
系统环境:Ubuntu 14.04
Qt版本: Qt 5.3.1 (GCC 4.6.1, 32 bit)
MySQL版本:5.6
    首先我通过官网下载了Qt的安装包,安装了Qt,安装目录为 ~/Qt5.3.1,之后通过apt-get安装了mysql。然后使用了一个简单的程序进行mysql的链接测试,发现报错,错误为
     QSqlDatabase: QMYSQL driver not loaded 
   QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7  
false  
因为之前在windows上也遇到了类似的报错,只要找到mysql的安装路径,将libmysql.dll动态库添加到Qt安装目录下的bin目录即可,在windows上我的Qt的安装目录为C:\Qt\Qt5.3.1\5.3\mingw482_32\binlinux下又该如何解决呢?
     是否是linux下mysql库的问题,还是Qt当中MySQL驱动插件的问题?
通过命令行进入Qt的安装目录,connlaio@ubuntu:~/Qt5.3.1/5.3/gcc/plugins/sqldrivers$  命令
ldd libqsqlmysql.so 
libmysqlclient_r.so.16 => not found ---- 
说明 MySQL的动态链接库无法找到,但是,在进入/usr/lib/目录下通过find命令发现,MySQL的动态链接库是存在的,不过,名字不同。
 find -name "libmysql*" -print
./i386-linux-gnu/libmysqlclient_r.so.18
      看来,我们需要重新编译Qt的MySQL驱动插件。找到Qt源码,进入qtbase/src/sql/目录,最简单的方法是将目录下的sql工程添加到qt中,构建MySQL驱动。然后到/qtbase/plugins/sqldriver目录下就能看到生成的动态库。然后将新的MySQL驱动插件拷贝到对应的gcc/plugins/sqldrivers目录下即可。
缺少mysql.h 文件 sudo apt-get install libmysqlclient-dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt5 中连接 MySQL 数据库,需要在项目的 .pro 文件中添加 MySQL 驱动程序库的链接。具体步骤如下: 1. 在 Qt 项目的 .pro 文件中添加如下代码: ``` QT += sql ``` 2. 下载 MySQL 驱动程序库,下载地址如下: https://dev.mysql.com/downloads/connector/c/ 3. 将下载好的 MySQL 驱动程序库中的 libmysql.dll 文件拷贝到 Qt 安装目录下的 bin 目录中,如: ``` C:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin ``` 4. 在 Qt 项目的 .pro 文件中添加如下代码: ``` LIBS += -L"path/to/mysql/lib" -lmysql INCLUDEPATH += "path/to/mysql/include" ``` 其中,path/to/mysql/lib 为 MySQL 驱动程序库中 libmysql.dll 文件所在路径,path/to/mysql/include 为 MySQL 驱动程序库中头文件所在路径。 5. 在代码中使用以下代码连接 MySQL 数据库: ``` #include <QSqlDatabase> #include <QSqlQuery> QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("database_name"); db.setUserName("username"); db.setPassword("password"); if (!db.open()) { // 连接失败 } else { // 连接成功 } ``` 其中,"QMYSQL" 为 MySQL 驱动程序的名称,"localhost" 为 MySQL 数据库的主机名,"database_name" 为要连接的数据库名称,"username" 和 "password" 分别为数据库的用户名和密码。 6. 使用 QSqlQuery 对象执行 SQL 语句,例如: ``` QSqlQuery query; query.exec("SELECT * FROM table_name"); while (query.next()) { QString name = query.value("name").toString(); int age = query.value("age").toInt(); // ... } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值