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

目的:

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

开发环境:windows10+qt5.14.2+oracle11g r2

操作步骤:

1、打开qt软件,创建一个新的application项目

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

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

2.2登录界面loginform设计

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开始调试运行

4、代码地址:

到此这篇关于qt连接oracle数据库并实现登录验证的操作步骤的文章就介绍到这了,更多相关qt连接oracle数据库内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐