QT----QTcreater连接Mysql数据库

之前写了一个图书管理系统用的是sqlite3,现在想用mysql,部署到网上,实现远程访问。

1、下载驱动,放入文件夹

首先,我的qt6没有安装mysql的驱动需要自己下载放入mysql驱动github链接
在这里插入图片描述
下载完成后解压放入对应的qt安装路径路径E:\VS2022\VSQT\6.4.3\mingw_64\plugins\sqldrivers

在这里插入图片描述
把文件夹外边另外三个文件复制到qt的bin里边
在这里插入图片描述

2、编写代码,实现本地访问

我在之前已经在mysql里重新制作了表格,只替换了连接数据的代码,其余代码功能一切正常。


void sqlmange::init()
{
    // 打开数据库
    // 使用 QMYSQL3 数据库驱动
    m_db = QSqlDatabase::addDatabase("QMYSQL");

    // 设置数据库名称
    // 数据库名为 bookmg
    m_db.setDatabaseName("bookmg");

    // 设置数据库用户名和密码
    // 用户名为 root,密码为
    m_db.setUserName("root");
    m_db.setPassword("xxxxxx");

    // 设置数据库服务器地址
    // 服务器地址为 localhost
    m_db.setHostName("localhost");

    // 打开数据库
    // 并输出打开结果到调试信息
    qDebug() <<"数据库连接:"+ m_db.open();
}

3、实现网络数据库

cmd里输入ipconfig,查询自己当前连接的网络的ip放入连接,此时显示我的电脑不允许访问这个数据区,那就是权限的问题
在这里插入图片描述
在这里插入图片描述但是我发现我新建的库没有权限的表,所以我把我的表都移动了,放入了mysql这个数据库里,并且把user表的表名更改为了usertb
在这里插入图片描述

3.1 更改权限

打开MySQL 8.0 Command Line Client,准备更改权限。
首先show databases;查看所有的数据库
在这里插入图片描述

然后use mysql;进入mysql数据库

在这里插入图片描述
show tables;显示表,其中user表里是存放了权限
在这里插入图片描述
select user,host from user;进入user表
在这里插入图片描述
update user set host = '%' where user = 'root';更新权限
在这里插入图片描述
flush privileges;刷新数据库,这样就完成了,通过了网络访问了数据库
在这里插入图片描述

3.2 修改代码

在qt里修改代码,就能够访问,debug能访问数据库,但是我打包程序单独使用无法访问
打包程序跑通数据库

void sqlmange::init()
{
    // 打开数据库
    // 使用 QMYSQL 数据库驱动
    m_db = QSqlDatabase::addDatabase("QMYSQL");

    // 设置数据库名称
    // 数据库名为 my_database
    m_db.setDatabaseName("mysql");

    // 设置数据库用户名和密码
    // 用户名为 root,密码为 123456
    m_db.setUserName("root");
    m_db.setPassword("xxx");

    // 设置数据库服务器地址
    // 服务器地址为 localhost
    m_db.setHostName("xxx");
    m_db.setPort(xxx);

    // 打开数据库
    // 并输出打开结果到调试信息
    qDebug() <<"数据库连接:"+ m_db.open();
}

纯真丁一郎博客点击访问:有时间就要学习
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值