mac上 qt与mysql的连接问题

2 篇文章 1 订阅

经过两天的折磨和挣扎,将Mac上QT与mysql数据库链接问题的解决做一个梳理,以防忘记,并供他人借鉴;

环境版本:Mac10.14,MySQL5.7.24,Qt5.14.2

首先我重新下载安装了Qt(安装了源码,即勾选了source),然后重新安装了MySQL,期望重新安装后,Qt的~/clang_64/plugins/sqldrivers/ 路径下自动存在mysql驱动,即libqsqlmysql.dylib,正如已经存在的libqsqlite.dylib等一样,然后看到的是失望。

于是我在重新编译mysql驱动 与 采用ODBC中间件之间进行了选择,很不幸,我首先选择了后者,我的想法是一劳永逸,学会使用中间件;

然而,Mac上安装ODBC首先需要安装ODBC manager数据管理器,于是我照做了,结果,Mac上免费的ODBC manager实在不好用,甚至有问题,这里不排除是我找的版本不好,查了查,有收费试用的,看着还不错,不过我放弃了。

于是我不得不面对重新编译mysql驱动,此方法最终成功了,但是该方法在实现过程中,遇到的问题,对于软件小白的我,折腾了一晚上,在此记录一下;

1、首先确保下载安装的qt源码路径中是否有mysql.pro工程,即/Users/sunnyfish/Qt/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/ 此路径下;

2、用Qt打开此路径下的mysql.Pro,

查看pro文件,注释掉第6行,即QMAKE_USE += mysql, 并添加最后三行;

这里需要说明,注释掉的,是因为后续编译时,报错:Project ERROR: Library 'mysql' is not defined.

添加的三行中,LIBS最好使用绝对路径,并且用双引号包起来,否则可能会报错:ld: library not found for -llibmysqlclient.20

3、接下来是编译,如果直接用Qtcreator左下边的小锤子编译,应该会报错:Cannot write file /mkspecs/modules-inst/qt_plugin_qsqlmysql.pri: Cannot create parent directory

这是由于权限不够导致的,这里就由面临选择了,有人说通过高权限运行编译,有人说将/Users/sunnyfish/Qt/5.14.2/Src/qtbase/的qtbase文件夹移到其他地方,不受权限制约再编译;

我又先选择了后者,于是失败了,反正我失败了;

4、采用高权限,在终端运行sudo qmake 和sudo make实现编译;具体方法引用别人教程:

 

编译成功后的效果如下:

并且运行最后一句查找命令,可以找到libqsqlmysql.dylib文件,如下:

5、将/Users/sunnyfish/Qt/5.14.2/Src/qtbase/src/plugins/sqldrivers/libqsqlmysql.dylib此路径下的libqsqlmysql.dylib

复制到/Users/sunnyfish/Qt/5.14.2/clang_64/plugins/sqldrivers/路径下;

6、创建Qt工程,在.pro文件中添加QT += sql

 在主程序中用如下代码进行测试,记得将数据库用户名和密码填写对,我的成功了。

只能说Mac真的让我又爱又恨。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Qt中与MySQL建立交互式连接,需要进行以下步骤: 1. 安装MySQL驱动程序:在Qt中使用MySQL需要安装MySQL驱动程序。你可以从Qt官方网站下载可用的驱动程序,也可以使用Qt提供的商业驱动程序。 2. 在Qt项目中包含MySQL头文件:在Qt项目中使用MySQL时,需要在代码中包含MySQL头文件。 3. 建立数据库连接:使用QSqlDatabase类在Qt中建立数据库连接。在连接数据库之前,需要设置数据库驱动程序和数据库名称。 4. 执行SQL语句:一旦连接成功,就可以使用QSqlQuery类执行SQL语句。你可以使用该类执行SELECT、INSERT、UPDATE和DELETE等SQL语句。 下面是一些示例代码,演示如何在Qt中与MySQL建立交互式连接: ```c++ #include <QCoreApplication> #include <QtSql> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 设置MySQL驱动程序 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydatabase"); db.setUserName("myusername"); db.setPassword("mypassword"); // 打开数据库连接 if (!db.open()) { qDebug() << "Failed to connect to database!"; return 1; } // 执行SQL查询 QSqlQuery query; query.exec("SELECT * FROM mytable"); while (query.next()) { QString name = query.value(0).toString(); int age = query.value(1).toInt(); qDebug() << name << age; } // 关闭数据库连接 db.close(); return a.exec(); } ``` 这只是一个简单的示例,你可以根据自己的需要进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyFish-ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值