Linux下的QT对MySQL数据库操作(超详细)

1.开发环境

Ubuntu 18+QT5

2.安装配置MySQL

  1. 使用apt安装mysql
sudo apt-get update		//更新软件库
sudo apt-get install mysql-server	//安装MySQL服务器
sudo apt-get install mysql-client	//安装MySQL客户端
  1. 启动 MySQL 服务
sudo service mysql start	//启动MySQL服务
service mysql status		//查看MySQL服务状态

在这里插入图片描述

可以看到MySQL服务器启动成功

  1. 配置MySQL数据库

MySQL 在安装后提供了一个安全性脚本,用于加固数据库系统。

sudo mysql_secure_installation

设置 root 用户的密码、删除匿名用户、禁止 root 远程登录等。按照提示进行设置。

如进行以上设置可使用mysql -u root -p登录到MySQL

CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;			//创建用户以及设置密码(可不创建,默认使用root登录)
  1. 重置MySQL密码
sudo mysql -u root	//无密码登录到MySQL
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;
exit;		//默认是高强度密码

如若设置低强度密码,可按如下操作进行

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
//在配置文件中找到包含 [mysqld] 的部分,并在其下添加以下行:
[mysqld]
validate-password=LOW
//保存并重启MySQL服务
sudo service mysql restart

在这里插入图片描述

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
exit;			//更改root弱密码(若未进行安全性设置,可直接修改为弱密码,无需修改配置文件)
  1. 安装配置完成

在这里插入图片描述

3.安装图形化MySQL管理软件navicat

  1. 下载navicat

    Linux版本

如若需要下载其他版本,将链接后的数字更改即可
在这里插入图片描述

  1. 安装navicat
//下载目录打开终端
sudo chmod +x navicat16-mysql-cs.AppImage //赋予可执行权
./navicat16-mysql-cs.AppImage 			  //启动
  1. navicat连接MySQL
    在这里插入图片描述在这里插入图片描述

测试连接成功

  1. 建立数据库
    在这里插入图片描述建立表并输入数据
    在这里插入图片描述在这里插入图片描述

4.QT连接MySQL数据库

由于在QT5的版本中移除了MySQL数据库驱动libqsqlmysql.so,因此我们需要使用qmake对QT源码进行重新编译以生成libqsqlmysql.so

1.下载QT源码文件

  1. QT源码在安装QT时即可下载
    在这里插入图片描述

2.查看QT当前支持数据库驱动

//demo.pro
QT += sql	//pro文件引入sql

//widget.h
#include <QtSql>

//main.cpp
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

	qDebug() << QSqlDatabase::drivers();//支持驱动
	
    // 手动加载MySQL驱动程序
    if (!QSqlDatabase::isDriverAvailable("QMYSQL")) {
        qDebug() << "MySQL driver not available";
        return -1;
    }

    // 设置数据库连接参数
    db.setHostName("127.0.0.1");
    db.setDatabaseName("demo");
    db.setUserName("root");
    db.setPassword("123456");

    // 尝试连接数据库
    if (db.open()) {
        qDebug() << "Connected to database";
        // 执行数据库操作
    } else {
        qDebug() << "Failed to connect to database:" << db.lastError().text();
        // 错误处理
    }

报错

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQ	
("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
//可以发现当前并不支持MySQL

//在QT数据库驱动文件夹中
tj@ubuntu:~/Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers$ pwd
/home/tj/Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers
tj@ubuntu:~/Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers$ ls
libqsqlite.so  libqsqlodbc.so  libqsqlpsql.so
//可以发现缺少libqsqlmysql.so,因此源码编译生成此文件后复制到该目录即可解决问题!

3.源码编译(qmake)MySQL驱动文件

  1. 进入QT安装目录Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers
tj@ubuntu:~/Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers$ ls
libqsqlite.so  libqsqlodbc.so  libqsqlpsql.so	//当前没有libqsqlmysql.so动态库文件
  1. 安装MySQL的开发库
sudo apt-get install libmysqlclient-dev
  1. 进入到QT源码中MySQL的文件路径中
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ pwd
/home/tj/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ ls
main.cpp  mysql.json  mysql.pro  qsql_mysql.cpp  qsql_mysql_p.h  README
  1. 定位编译所需库文件
:~$ sudo find / -name mysql.h 2>/dev/null
/usr/include/mysql/mysql.h

:~$ locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.29
  1. 配置编译文件(mysql.pro)
:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ vim mysql.pro //修改如下并保存退出(wq)

在这里插入图片描述

  1. 编译
//上级目录
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ cd ..		//退回到上一级
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers$ /home/tj/Qt5.12.8/5.12.8/gcc_64/bin/qmake  //执行qmake
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers$ make	//编译源码

//进入mysql目录再次编译
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers$ cd mysql/
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ /home/tj/Qt5.12.8/5.12.8/gcc_64/bin/qmake 
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/mysql$ make


//查看生成的libqsqlmysql.so文件
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers$ pwd
/home/tj/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers$ ls
libqsqlite.so  libqsqlite.so.debug  libqsqlmysql.so  libqsqlmysql.so.debug

上述步骤一定注意路径,对应于自己的QT安装路径,步骤较繁琐

4.生成libqsqlmysql.so文件

  1. 将上述步骤中生成的文件复制到QT的数据库驱动支持文件夹里(Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers
tj@ubuntu:~/Qt5.12.8/5.12.8/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers$ cp libqsqlmysql.so /home/tj/Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers/

在这里插入图片描述

可以看到Qt5.12.8/5.12.8/gcc_64/plugins/sqldrivers中已经存在有效的MySQL驱动程序库文件

5.测试QT连接MySQL数据库

  1. 创建测试项目
qDebug() << QSqlDatabase::drivers();
//再次查看QT支持的数据库驱动,可以看到已经支持MySQL了!
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
//测试数据库连接
 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

//    qDebug() << QSqlDatabase::drivers();

//     手动加载MySQL驱动程序
//    if (!QSqlDatabase::isDriverAvailable("QMYSQL")) {
//        qDebug() << "MySQL driver not available";
//        return -1;
//    }

    // 设置数据库连接参数
    db.setHostName("127.0.0.1");
    db.setDatabaseName("demo");
    db.setUserName("root");
    db.setPassword("123456");

    // 尝试连接数据库
    if (db.open()) {
        qDebug() << "Connected to database"; 
    } else {
        qDebug() << "Failed to connect to database:" << db.lastError().text();
        // 错误处理
    }


    QSqlQuery query;
    query.exec("SELECT * FROM student");
    while (query.next()) {
        QString value = query.value(0).toString();
        // 处理查询结果
        qDebug() << value;
    }
    db.close(); //关闭数据库

输出:
在这里插入图片描述

以上成功连接数据库并执行SQL成功!

  • 39
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux系统上使用Qt连接MySQL数据库,您需要完成以下步骤: 1. 安装MySQL服务器和客户端库 在Linux上安装MySQL服务器和客户端库,可以通过以下命令实现: ``` sudo apt-get install mysql-server libmysqlclient-dev ``` 2. 创建Qt项目 在Qt中创建一个新的项目,并确保您已经为所选的Qt版本安装了MySQL驱动程序。如果没有安装,请在Qt Creator的“帮助”菜单下选择“关于插件”并检查MySQL插件是否已安装。 3. 添加MySQL驱动程序 在Qt Creator中,选择项目文件并打开.pro文件。在此文件中,添加以下行: ``` QT += sql QT += mysql ``` 这将确保您的项目包含Qt SQL和MySQL驱动程序。 4. 编写连接代码 在main.cpp文件中,编写以下代码来连接MySQL数据库: ``` #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // MySQL服务器地址 db.setDatabaseName("mydatabase"); // 数据库名称 db.setUserName("username"); // 用户名 db.setPassword("password"); // 密码 if (db.open()) { qDebug() << "Connected to database!"; } else { qDebug() << "Failed to connect to database!"; } return a.exec(); } ``` 在这个例子中,我们使用QSqlDatabase类来连接数据库。首先,我们通过addDatabase()函数添加MySQL驱动程序,并设置连接参数。然后,我们通过open()函数打开连接。如果连接成功,我们将在控制台输出“Connected to database!”,否则输出“Failed to connect to database!”。 5. 运行项目 使用Qt Creator编译并运行您的项目。如果所有步骤都正确完成,您将在控制台上看到“Connected to database!”。 希望这可以帮助您在Linux上使用Qt连接MySQL数据库

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值