QT-小项目:连接MY SQL数据库实现登录(下一章实现登录注册账号和忘记密码功能)

一、环境准备
1、下载MYSQL 64位,安装完成,制作简易数据库教程如下:
MY SQL安装
2、QT 编译器使用
在这里插入图片描述
二、实现工程目录(基于上一章基础上)
在这里插入图片描述
三、源程序增加内容如下:
login.cpp
增加头文件:

#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlQuery>
void login::connent_mysql()
{
    //链接数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("127.0.0.1");
    db.setPort(3306);                    //端口
    db.setUserName("root");
    db.setPassword("******");
    db.setDatabaseName("user");
    if(!db.open()){
        qDebug() << "未成功链接到数据库";
        QMessageBox::information(this, "infor", "link success");
    }else{
        qDebug() << "成功链接到数据库";
//        QMessageBox::information(this, "infor", "link success");
    }

}

注意如下:
1、以下信息需要按照实际在这里插入图片描述

2、连接数据库,不成功时,可参考https://blog.csdn.net/qq_37529913/article/details/109850670
或者使用ODBC进行链接

3、登录按钮的实现

void login::on_pushButton_login_clicked()
{
    //连接数据库 mysql
    connent_mysql();

    QString account = ui->lineEdit_account->text();
    QString password = ui->lineEdit_password->text();

    QSqlQuery query;

//    query.exec("select * from os_user");

    QString qs = QString("select * from os_user where account = '%1' and pwd='%2'").arg(account).arg(password);
    query.exec(qs);//执行SQL语句
//    qDebug() << qs;
//    qDebug() <<query.size();//获取内容的大小
    if(query.next()){          //获取查询结果集
//    QMessageBox::information(this,"登录","登录成功");
//    qDebug()<<query.value("account").toString();
    this->close();
    MainWindow *h=new MainWindow;
    h->show();
    }
    else
    {
    QMessageBox::information(this,"登录","登录失败");
    }

//    if(ui->lineEdit_account->text() == "admin" && ui->lineEdit_password->text() == "123456"){
//        this->close();
//        MainWindow *h=new MainWindow;
//        h->show();
//    }else{
//        QMessageBox::warning(this,tr("登录失败"),tr("用户名或密码输入错误!"),QMessageBox::Ok);
//        ui->lineEdit_account->clear();
//        ui->lineEdit_password->clear();
//        ui->lineEdit_password->setFocus();
//    }

}

四、总体效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据库内容:
在这里插入图片描述

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现QQ注册账号密码,存入数据库并返回登录页面,需要以下步骤: 1. 创建一个注册界面,包括账号、密码等输入框和“注册”、“返回登录”按钮。 2. 在Qt连接数据库,并创建一个名为“user”的表,用于存储用户的账号和密码。 3. 当用户点击“注册”按钮时,获取用户输入的账号和密码,并将其插入到“user”表中。 4. 注册成功后,返回登录页面。 下面是一个基本的实现步骤: 1. 创建注册界面的UI设计,包括账号、密码等输入框和“注册”、“返回登录”按钮。 2. 在Qt连接数据库,可以使用QSqlDatabase类实现。可以在main函数中先连接数据库: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("dbname"); db.setUserName("root"); db.setPassword("password"); if (!db.open()) { QMessageBox::critical(nullptr, "Error", "Failed to connect database!"); return -1; } ``` 其中,将“localhost”替换为自己的数据库地址,“dbname”替换为自己的数据库名,“root”替换为自己的数据库用户名,“password”替换为自己的数据库密码。 3. 创建一个名为“user”的表,用于存储用户的账号和密码。可以使用以下代码创建表: ``` QSqlQuery query; bool success = query.exec("CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY AUTO_INCREMENT, account TEXT NOT NULL, password TEXT NOT NULL)"); if (!success) { QMessageBox::critical(nullptr, "Error", "Failed to create table!"); return -1; } ``` 4. 当用户点击“注册”按钮时,获取用户输入的账号和密码,并将其插入到“user”表中。可以使用以下代码实现: ``` QString account = ui->accountLineEdit->text(); QString password = ui->passwordLineEdit->text(); QSqlQuery query; query.prepare("INSERT INTO user (account, password) VALUES (:account, :password)"); query.bindValue(":account", account); query.bindValue(":password", password); bool success = query.exec(); if (!success) { QMessageBox::critical(nullptr, "Error", "Failed to insert data!"); return; } ``` 5. 注册成功后,返回登录页面。可以使用以下代码实现: ``` LoginWidget *loginWidget = new LoginWidget; loginWidget->show(); this->close(); ``` 完整代码示例: ``` #include <QSqlDatabase> #include <QSqlQuery> #include <QMessageBox> // 注册界面的类名为RegisterWidget,包括账号、密码等输入框和“注册”、“返回登录”按钮。 // 当用户点击“注册”按钮时,执行注册操作。 void RegisterWidget::on_registerButton_clicked() { QString account = ui->accountLineEdit->text(); QString password = ui->passwordLineEdit->text(); QSqlQuery query; query.prepare("INSERT INTO user (account, password) VALUES (:account, :password)"); query.bindValue(":account", account); query.bindValue(":password", password); bool success = query.exec(); if (!success) { QMessageBox::critical(nullptr, "Error", "Failed to insert data!"); return; } LoginWidget *loginWidget = new LoginWidget; loginWidget->show(); this->close(); } // 在main函数中连接数据库,并创建一个名为“user”的表,用于存储用户的账号和密码。 int main(int argc, char *argv[]) { QApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("dbname"); db.setUserName("root"); db.setPassword("password"); if (!db.open()) { QMessageBox::critical(nullptr, "Error", "Failed to connect database!"); return -1; } QSqlQuery query; bool success = query.exec("CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY AUTO_INCREMENT, account TEXT NOT NULL, password TEXT NOT NULL)"); if (!success) { QMessageBox::critical(nullptr, "Error", "Failed to create table!"); return -1; } RegisterWidget w; w.show(); return a.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

憨憨是你。。。。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值