QT连接云服务器的mysql +ubuntu 连接云服务器mysql

环境: QT5.9 + windows10 + ubuntu-mysql5.7

如果需要编译数据驱动的可以参考这篇文章:编译mysql驱动

QT 连接测试Code:
新建一个Qt 项目(有无界面都ok)

pro 上面需要加上这个

QT       += core gui sql

main 文件:

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
#include <QSqlQuery>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug() << "Available drivers: ";
    QStringList drivers =QSqlDatabase::drivers();
//    foreach (QString d, drivers) {
//        qDebug() << d;
//    }

    QSqlDatabase db =  QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("x.xxx.147.218");  // 这里换成你自己的云服务器ip
    db.setPort(3306);
    db.setDatabaseName("mydata");   // 需要安装64位的驱动 对应编译器64位
    db.setUserName("root");
    db.setPassword("123456");
    if(!db.open())
        qDebug() << "Failed!";
    else
        qDebug() << "open";

    QSqlQuery query(db);
    //注意这里varchar一定要指定长度,不然会出错
    query.exec("create table student(id int primary key,name varchar(20))");

    query.exec("insert into student values(1,'xiaoliu')");
    query.exec("insert into student values(2,'xiaogao')");
    query.exec("insert into student values(3,'xiaoli')");
    query.exec("insert into student values(4,'xiaoma')");

    query.exec("select id,name from student where id >= 2");

    while(query.next())
    {
        int value0 = query.value(0).toInt();
        QString value1 = query.value(1).toString();
        qDebug() << value0 << value1 ;
    }
    return a.exec();
}

自己遇到的错误:

  1. 刚开始打印qt自带驱动的时候,发现有mysql驱动,就不没有管它,就一直报这个错误。
    在这里插入图片描述
    解决办法,编译mysql驱动,或者在网上找一下windows下的32位或者是64位的驱动,这里的位数是根据自己编译器来决定的,不是根据你安装qt 的位数决定的(这里网上有些文章弄混淆了)
    需要的可以留言,我私发给你。
    然后放在bin 目录就行,如下图,在按照上面的代码连接就ok了。结果如下。
    在这里插入图片描述
    在这里插入图片描述
    需要注意的点: 云数据库需要修改权限,我貌似之前就修改过了,这里就不讲了。(设置% 是允许所有机器登陆root账号)
    在这里插入图片描述

另外的修改权限大家可以看下这个文章:https://blog.csdn.net/weixin_39955142/article/details/113385754

在ubuntu 中qt 连接云服务器数据库

出现问题: Qt访问mysql还是报Driver not loaded
还是上面的代码,直接运行的时候会出现驱动问题
这时候需要在安装qt 的目录下查询一下是否有mysql驱动
刚开始我的ubuntu中是出现这样的libmysqlclient.so.18 --> not found (这个是解决问题的根本原因)
在这里插入图片描述

解决办法: 下载驱动,直接点击这里
在这里插入图片描述
下载上面的驱动后,直接放在之前查询驱动的目录中,然后安装,sudo dpkg -i libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
安装完后,在查询会显示全部正常。
在这里插入图片描述
然后再去ubuntu 中的qt 连接mysql 就正常了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在编译Qt5.15.2时,我们可以选择是否编译MySQL插件。MySQL插件提供了与MySQL数据库的通信功能。 要编译MySQL插件,我们需要在编译Qt之前安装MySQL C API库和头文件。在Ubuntu上,可以使用以下命令安装: sudo apt-get install libmysqlclient-dev 在Windows上,可以从MySQL官网下载Connector/C,并将其包含到环境变量中。 安装完MySQL C API之后,我们需要在configure命令中加入以下参数来编译MySQL插件: -qt-sql-mysql:编译MySQL插件 -plugin-sql-mysql:将MySQL插件拷贝到Qt安装目录的plugins目录中 例如,在Ubuntu上,我们可以使用以下命令来编译Qt5.15.2并包括MySQL插件: ./configure -qt-sql-mysql -plugin-sql-mysql 在Windows上,我们可以使用类似以下命令: configure -qt-sql-mysql -plugin-sql-mysql 然后,再运行make和make install命令来完成编译和安装过程。 完成编译后,就可以在Qt应用程序中使用MySQL数据库了。可以使用以下代码测试MySQL插件是否正常工作: #include <QSqlDatabase> #include <QSqlError> QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydb"); db.setUserName("username"); db.setPassword("password"); if (!db.open()) { qDebug() << "Failed to connect to database:" << db.lastError().text(); } else { qDebug() << "Connected to database"; } 以上是编译Qt5.15.2 MySQL插件的基本步骤,您可以根据您的需求和系统环境进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值