系列文章目录
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数据库也是用的较多的数据库,后续还要深入的学习数据库的知识。路漫漫其修远兮。。。。。