目的:

本文实现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

#include

#include

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

#include

#include

#include

#include

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()<

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() <

//数据库连接

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数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤相关推荐

  1. qt mysql乱码_Qt连接mysql 并且 解决中文乱码问题

    课题需要做一个数据展示程序, 我就想到了Qt, 连接mysql的过程中是挺简单的, 但是还是有两个坑... 一号坑: Qt 和 mysql 位数要相同!!! 我的就是不相同, 卸了mysql重装的. ...

  2. qt mysql读写_QT读写Sqlite数据库

    QT读写Sqlite数据库 //.h /**************************************************************************** ** ...

  3. oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...

    C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...

  4. codematic2连接mysql失败_怎么连接oracle数据库

    我想连接oracle数据库,但是"服务"那一项不知道填什么,求帮助,非常感谢! -------------------------------------------- tnsna ...

  5. oracle sql 导入mysql数据库备份_使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复...

    使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...

  6. linux下php远程连接mysql_Linux下PHP远程连接Oracle数据库 | 系统运维

    说明: Web服务器环境:CentOS 5.8 32位+Nginx 1.2.3+Mysql 5.5.27+php 5.3.16 Web服务器IP:192.168.21.149 php源码编译目录:/u ...

  7. Navicate Premium连接Oracle数据库报错

    Navicat Premium连接MySQL数据库没有问题,在连接Oracle数据库的时候报错,提示:ORA-28547:connection to server failed,probable Or ...

  8. 跳坑成功,手摸手带你使用PHP连接Oracle数据库

    文章目录 1. Linux版 1.1 安装oracle客户端 1.2 安装oci8扩展 1.3 安装pdo_oci扩展 1.4 测试PHP连接Oracle数据库 2. Windows版 2.1 安装O ...

  9. ssm oracle mysql_ssm连接oracle数据库

    ssm连接oracle数据库 发布时间:2018-06-17 19:04, 浏览次数:1001 , 标签: ssm oracle 之前ssm项目使用的都是mysql数据库,现在要使用oracle数据库 ...

最新文章

  1. PHP+jQuery+Ajax实现用户登录与退出
  2. 家园签到:无忧币天天送,连续领礼更多!【家园帮助】
  3. python读txt转array_python将txt文件读入为np.array的方法
  4. 格兰杰因果关系检验_混频(mixed frequency)数据的格兰杰因果(Grange causality)检验及其Matlab实现...
  5. 购物商城框架java_基于jsp的购物商城-JavaEE实现购物商城 - java项目源码
  6. GDB同步显示源代码——layout
  7. 【广外女生】远程监控软件2008A免费版本
  8. Mysql 8踩坑之1054(42S22):Unkown column ‘password‘ in ‘field list‘ 与1251- Client deos not support authen
  9. 分享教程,制作Srt字幕最简单的方法
  10. Could not establish connection to...
  11. lasso回归python代码_LASSO回归代码实现 坚韧不拔|静水流深|读书|写作|博雅|数据分析|Python|商业|独立·独特·自立门户 kebook...
  12. 数据链路层(以太网、MTU、ARP协议)
  13. 原生 JS 实现移动端 Touch 滑动反弹
  14. 阿里校招应届生面试经验
  15. 如何求出二次贝塞尔曲线上面的各个点呢
  16. Android Killer--安卓反编译工具
  17. Apriori算法的介绍
  18. Debugging Tools for Windows (WinDbg)的使用
  19. 现代设计在中国丨包豪斯城市会客厅无锡站圆满结束!
  20. 【拼车小程序源码推荐】方便省力快速搭建首选人人拼车CMS系统

热门文章

  1. jQuery中的for循环var与let区别
  2. 运维工程师是桥的护栏_桥梁专家:钢结构桥比混凝土桥易涡振 以后出现涡振可能性会提高...
  3. PHP根据地址 获取坐标 thinkphp根据地址 获取坐标(百度地图)
  4. MySQL分页查询慢的方案解决
  5. 八代i7装服务器系统2012,八代I7能装win7系统吗,会影响性能吗-8代win7,8代cpu完美装win7...
  6. java生成三级级联的数据,微信小程序三级级联,自定义json数据源
  7. rac ogg to mysql_GoldenGate从oracle迁移数据到mysql
  8. 大数据 清华 覃征_2021年清华(清华大学)大数据工程考研难度解析、考研经验分享...
  9. springboot-mail
  10. matlab yalmip安装教程,如何在matlab路径中安装yalmip Matlab R2014a添加yalmip图文教程