当前位置: 首页 > article >正文

利用 Qt 和 MySQL 实现简单的数据库用户登录与创建功能

        本文将介绍如何使用 Qt 框架与 MySQL 数据库进行连接,并实现一个简单的用户登录和数据库创建功能。代码示例不但涵盖了数据库连接的基础知识,也涉及了表的创建等操作。在以下应用程序中,实现了本地用户登录功能(如果有需要可以修改主机名来实现远程登陆),允许用户输入数据库的用户名和密码,并在成功登录后创建一个新的数据库和相关数据表。这个应用可以作为任何需要存储用户数据的项目的基础。

在开始编写代码之前,确保已安装以下软件:

  • Qt(推荐使用 Qt Creator)
  • MySQL 数据库(建议使用最新版本)
  • Qt SQL 模块

        首先是头文件的引入和构造函数的实现:这里,MainWindow 继承自 QMainWindow,并通过 setupUi 方法初始化用户界面。 

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

         接下来的关键部分是处理登录按钮点击事件的槽函数 on_login_clicked

void MainWindow::on_login_clicked()
{
    QString user = ui->user->text();
    QString pwd = ui->pwd->text();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    
    db.setUserName(user);
    db.setPassword(pwd);

        在这里,我们获取用户输入的用户名和密码,并设置数据库连接的基本信息。注意,数据库驱动选择为 QMYSQL,并连接到本地 MySQL 服务器。 接下来,我们尝试连接到数据库,并处理可能出现的错误:

    if (!db.open()) {
        QMessageBox::warning(nullptr, "错误提示", "无法连接到 MySQL 服务器");
        return;
    }

        如果连接失败,程序会弹出一个警告框,提示用户连接问题。 以下代码尝试创建一个新的数据库 test1:在这里,我们使用 CREATE DATABASE IF NOT EXISTS 语句来创建数据库。

 QSqlQuery query;
    if (!query.exec("CREATE DATABASE IF NOT EXISTS test1")) {
        QMessageBox::warning(nullptr, "错误提示", "无法创建数据库: " + query.lastError().text());
        return;
    }

        成功创建数据库后,我们将连接到该数据库,并创建两个数据表 first 和 second 来存储用户数据和相关信息: 

  • first 表:存储用户信息,包括 id(主键)、name(姓名)、age(年龄)和 email(电子邮件)。
  • second 表:存储用户的地址和电话号码,同时包含 user_id 外键,建立与 first 表的关联。
    db.setDatabaseName("test1");
    if (!db.open()) {
        QMessageBox::warning(nullptr, "错误提示", "无法连接到数据库 test1");
        return;
    }

    QMessageBox::information(nullptr, "成功", "数据库 test1 创建成功并已连接");

    // 创建 first 表
    if (!query.exec("CREATE TABLE IF NOT EXISTS first ("
                    "id INT AUTO_INCREMENT PRIMARY KEY, "
                    "name VARCHAR(100) NOT NULL, "
                    "age INT NOT NULL, "
                    "email VARCHAR(100))")) {
        QMessageBox::warning(nullptr, "错误提示", "无法创建表 first: " + query.lastError().text());
        return;
    }

    // 创建 second 表
    if (!query.exec("CREATE TABLE IF NOT EXISTS second ("
                    "id INT AUTO_INCREMENT PRIMARY KEY, "
                    "address VARCHAR(255), "
                    "phone VARCHAR(20), "
                    "user_id INT, "
                    "FOREIGN KEY (user_id) REFERENCES first(id))")) {
        QMessageBox::warning(nullptr, "错误提示", "无法创建表 second: " + query.lastError().text());
        return;
    }

    QMessageBox::information(nullptr, "成功", "表 first 和 second 创建成功");
}

         关键的点击槽函数on_login_click()一直到这一部分的代码才完成,记得在使用这个函数前,请先创建一个名为login的按钮(button),并点击信号与槽再来实现这一部分代码。

        本文主要介绍了如何利用 Qt 框架与 MySQL 数据库结合,简洁地实现用户登录过程并创建数据库和表的功能。通过这段代码,相信大家了解 Qt 连接 MySQL 的基本操作,不过Qt5之后需要自己编译MySQL驱动程序,相信这对大家来说不是难事。

        在实际开发中,可以考虑加强用户输入的验证机制,以及处理更复杂的错误管理,以提升应用的健壮性。在后续的工作中,可以逐步实现在数据库中进行增删改查(CRUD)操作的功能,使应用更具实际应用价值。

 


http://www.kler.cn/news/335147.html

相关文章:

  • Linux 安装 yum
  • 聊聊JIT是如何影响JVM性能的!
  • YOLO11改进|卷积篇|引入SPDConv
  • unity一键注释日志和反注释日志
  • Transformer 模型和 BERT 模型:概述
  • Python机器学习模型的部署与维护:版本管理、监控与更新策略
  • SpringCloudAlibaba的nacos启动注册实现
  • C0007.Clion中添加ui文件及运行的完整步骤
  • MySQL深度分页
  • TypeScript编译选项
  • 用人工智能写作:专业作家利用 ChatGPT 的五种方式 ✍️
  • 文心智能体——制作你的专属AI
  • 前缀和(8)_矩阵区域和
  • 如何降低实施APS的复杂性
  • zy89、90_C#中字符串及控制字符串的常用函数
  • windows C++-使用任务和 XML HTTP 请求进行连接(一)
  • 「OC」多线程的学习——NSThread
  • C语言 | Leetcode C语言题解之第449题序列化和反序列化二叉搜索树
  • 【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南
  • Spring的热部署工具和数据库密码加盐操作