初学QT数据库之Qsqlite制作简单的登录注册界面

系列文章目录

Qt可以连接各种不同的数据库,如MySql、Oracle、SQLite等。开发者可以根据项目需求选择合适的数据库进行连接和操作。QT数据库开发实例中,开发者通常会设计各种功能,如创建数据库、连接数据库、执行SQL查询、更新数据等。这些功能可以通过Qt提供的数据库类(如QSqlDatabase、QSqlQuery等)来实现。



前言

本篇文章主要介绍使用Qsqlite数据库进行一个简答的登录注册界面功能,旨在对QSqlite数据库有个基础的入门和接受。


一、制作主界面

在qt中新建一个简单的主界面,这里没有放任何控件,仅仅是一个展示。
主界面
在这里插入图片描述

二、制作登录界面

新建一个QDialog子界面

登录子界面
在这里插入图片描述
具体代码如下:

#include<QSqlQuery>
#include<QSqlQueryModel>
#include<QMessageBox>
#include<QDebug>
#include<QDialog>
#include<QSqlError>
#include "widget.h"
#include "signupdialog.h"
namespace Ui {
class loginDialog;
}

class loginDialog : public QDialog
{
    Q_OBJECT

public:
    explicit loginDialog(QWidget *parent = nullptr);
    ~loginDialog();

private:
    Ui::loginDialog *ui;
    void createData();


signals:
    void Login();
private slots:
    void on_btnLogin_clicked();
    void on_btnSign_clicked();
};

#endif // LOGINDIALOG_H

#include "logindialog.h"
#include "ui_logindialog.h"

loginDialog::loginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::loginDialog)
{
    ui->setupUi(this);
    createData();
    ui->lineEdit_pwd->setEchoMode(QLineEdit::Password);


}

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

void loginDialog::createData()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE","1111");
    db.setDatabaseName("test.db");
    if(!db.open()){
        QMessageBox::critical(this,"错误","创建数据库失败");
        qDebug()<<db.lastError().text();
        qDebug()<< db.driverName();
        return;
    }

    QSqlQuery query;
    query.exec("DROP TABLE admin");
    query.exec("CREATE TABLE admin("
               "id INTEGER PRIMARY KEY AUTOINCREMENT,"
               "name VARCHAR(30) NOT NULL,"
               "password VARCHAR(30) NOT NULL)"
               );


    query.exec("INSERT INTO admin(name,password)"
                          "VALUES('sy','1234')");
    db.close();

}

void loginDialog::on_btnLogin_clicked()
{
    QString name=ui->lineEdit_Account->text();
    QString pwd=ui->lineEdit_pwd->text();
    QSqlDatabase db=QSqlDatabase::database("1111");
    if(!db.open()){
        QMessageBox::information(this,"错误","连接失败");
        return;
    }

   QString sql=QString("select * from admin where name='%1' and password='%2'").arg(name).arg(pwd);
   QSqlQuery query(db);
   query.exec(sql);
   if(!query.next()){
        QMessageBox::information(this,"登录认证","登录失败,账户或者密码错误");
   }else{
       QMessageBox::information(this,"登录认证","登录成功");
       Widget *w=new Widget;
       w->show();
       this->close();
   }

}



void loginDialog::on_btnSign_clicked()
{
    this->close();
    signUpDialog *signDlg=new signUpDialog;
    signDlg->show();
}

创建数据库代码运行完成后,会在工程目录下生成一个test.db数据库文件
在这里插入图片描述
如果要查看里面的内容可以使用SQLiteStudio查看数据库里面的内容。
下载地址为https://sqlitestudio.pl/
在这里插入图片描述

三、制作注册界面

新建一个QDialog子界面

在这里插入图片描述
在这里插入图片描述
具体实现代码如下:

#ifndef SIGNUPDIALOG_H
#define SIGNUPDIALOG_H

#include <QDialog>
#include "logindialog.h"
namespace Ui {
class signUpDialog;
}

class signUpDialog : public QDialog
{
    Q_OBJECT

public:
    explicit signUpDialog(QWidget *parent = nullptr);
    ~signUpDialog();

private slots:
    void on_btnSign_clicked();

    void on_btnReturnLogin_clicked();

private:
    Ui::signUpDialog *ui;

};

#endif // SIGNUPDIALOG_H

signUpDialog::signUpDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::signUpDialog)
{
    ui->setupUi(this);
    ui->lineEditPWD->setEchoMode(QLineEdit::Password);
    ui->lineEditSure->setEchoMode(QLineEdit::Password);

}

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

void signUpDialog::on_btnSign_clicked()
{
     QString username=ui->lineEditAccount->text();
     QString pwd=ui->lineEditPWD->text();
     QString surepwd=ui->lineEditSure->text();
     QSqlDatabase db=QSqlDatabase::database("1111");
     if(!db.open()){
         QMessageBox::information(this,"错误","连接失败");
         return;
     }
     QSqlQuery query(db);
     if(pwd==surepwd){
         QString sql=QString("INSERT INTO admin(name,password) values('%1','%2');").arg(username).arg(pwd);
         if(!query.exec(sql)){
             QMessageBox::information(this,"提示","注册失败");

         }else{
              QMessageBox::information(this,"提示","注册成功");
              loginDialog *loginDlg=new loginDialog;
              loginDlg->show();
              this->close();
         }
     }else{
         QMessageBox::information(this,"注册认证","两次密码输入不一致");
     }

}


void signUpDialog::on_btnReturnLogin_clicked()
{
    this->close();
    loginDialog *loginDlg=new loginDialog;
    loginDlg->show();
}

四、运行

首先在main.cpp文件中将主界面显示代码注释;
在这里插入图片描述
运行代码:
在这里插入图片描述

点击注册按钮,会跳转到注册界面,进行注册
在这里插入图片描述
在这里插入图片描述
这时候可以在数据库看到新注册的账号和密码;
在这里插入图片描述
注册成功后,会自动跳转到登录界面
输入刚注册的账号密码,进行登录,登录成功后,进入主界面;
在这里插入图片描述
主界面

总结

该例子仅仅展示了如何是好Qsqlite数据库进行一个登录注册界面的制作,主要是数据库的创建和插入功能。数据库主要四大功能,增删查改。还有MYSQL数据库也是用的较多的数据库,后续还要深入的学习数据库的知识。路漫漫其修远兮。。。。。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值