QT连接Oracle数据库并实现登录验证的操作步骤

作者:mrr 时间:2024-01-27 13:06:44 

目的:

本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成功。

开发环境:Windows10+QT5.14.2+Oracle11G R2

操作步骤:

1、打开QT软件,创建一个新的Application项目

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

QT连接Oracle数据库并实现登录验证的操作步骤

2、设计界面并修改代码:

2.1修改项目配置文件,添加sql字符串表示要对数据库进行操作。

QT连接Oracle数据库并实现登录验证的操作步骤

2.2登录界面LoginForm设计

QT连接Oracle数据库并实现登录验证的操作步骤

2.3编写登录界面代码

LoginForm.h代码如下:


#ifndef LOGINFORM_H
#define LOGINFORM_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>

QT_BEGIN_NAMESPACE
namespace Ui { class LoginForm; }
QT_END_NAMESPACE

class LoginForm : public QMainWindow
{
Q_OBJECT

public:
LoginForm(QWidget *parent = nullptr);
~LoginForm();

void initsql(); //初始化数据库

private slots:
void on_pushButton_clicked();

QString encrypt(const QString &str);//自定义加密函数

private:
Ui::LoginForm *ui;
QSqlDatabase db;
QSqlQuery *query;
};
#endif // LOGINFORM_H

#include "loginform.h"
#include "ui_loginform.h"

#include <QStackedWidget>
#include <QMessageBox>
#include <QDebug>
#include <QWidget>
#include <QCryptographicHash>

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

initsql();//打开数据库连接
}

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

//登录验证账号密码是否正确
void LoginForm::on_pushButton_clicked()
{
//获得用户和密码
QString name=ui->lineEdit->text();
QString password=ui->lineEdit_2->text();

QByteArray ba = password.toUtf8();
QByteArray md5Password = QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Md5).toHex();

QString str=QString("select * from USER where UserName='%1' and Password='%2'").arg(name).arg(encrypt(password));
qDebug()<<str;
query=new QSqlQuery;
query->exec(str);
query->last();
int record=query->at()+1;
if(record==0){
 QMessageBox::information(this,"提示","用户或密码不对",QMessageBox::Ok);
}
else{

QMessageBox::information(this,"提示","系统登录成功",QMessageBox::Ok);
}

}
//MD5加密函数
QString LoginForm::encrypt(const QString &str)
{
//字符串MD5算法加密
QByteArray btArray;

btArray.append(str);//加入原始字符串

QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密算法

hash.addData(btArray); //添加数据到加密哈希值

QByteArray resultArray =hash.result(); //返回最终的哈希值

QString md5 =resultArray.toHex();//转换为16进制字符串

return md5.toUpper();
}
//初始化打开数据库连接
void LoginForm::initsql()
{
/*若输出列表中出现QOCI8和QOCI,则表示驱动加载成功*/
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() <<"\t" << driver;

//数据库连接
db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("192.168.1.100");//数据库服务器ip
db.setPort(1521);//数据库端口号
db.setDatabaseName("orcl");//数据库名称
db.setUserName("dbUserName");//数据库用户名
db.setPassword("dbUserPassword");//数据库密码
db.open();

}

3、按F5开始调试运行

QT连接Oracle数据库并实现登录验证的操作步骤

4、代码地址:

https://codechina.csdn.net/xqf222/qtlogin/

来源:https://blog.csdn.net/xqf222/article/details/113361701

标签:QT,Oracle,登录,验证
0
投稿

猜你喜欢

  • AJAX打造博客无刷新搜索

    2007-08-23 08:48:00
  • Oracle 管道 解决Exp/Imp大量数据处理问题

    2024-01-21 22:15:16
  • ASP分页显示Recordset数据

    2008-11-07 15:43:00
  • delete from 表名与truncate table 表名区别

    2012-11-30 20:31:37
  • Python 虚拟环境工作原理解析

    2023-02-21 02:18:50
  • Python单元测试_使用装饰器实现测试跳过和预期故障的方法

    2022-07-27 17:53:44
  • Python实现定时发送监控邮件

    2023-12-29 06:38:57
  • Python实现连接FTP并下载文件夹

    2021-02-28 01:56:26
  • go语言yaml转map、map遍历的实现

    2024-05-25 15:19:52
  • Intellij idea2020永久破解,亲测可用!!!

    2022-11-29 17:52:24
  • MySQL函数与存储过程字符串长度限制的解决

    2024-01-16 13:17:01
  • Django+Bootstrap实现计算器的示例代码

    2022-08-10 02:42:01
  • 微信小程序之数据缓存的实例详解

    2024-04-19 09:49:53
  • 一篇文章带你学习python的函数与类

    2023-10-15 05:04:18
  • 解决Django cors跨域问题

    2021-07-02 08:42:36
  • python检测远程服务器tcp端口的方法

    2021-02-18 22:49:44
  • 关于django python manage.py startapp 应用名出错异常原因解析

    2023-04-04 08:57:28
  • Pycharm导入anaconda环境的教程图解

    2022-12-15 04:26:40
  • Go语言基于HTTP的内存缓存服务的实现

    2024-05-21 10:25:12
  • Python区块链客户端类开发教程

    2023-06-18 03:05:51
  • asp之家 网络编程 m.aspxhome.com