• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
阿豆学长长ov 显示全部楼层 发表于 2021-8-14 15:24:03 |阅读模式 打印 上一主题 下一主题
目标:

本文实现QT登录界面,输入账号和暗码后,系统毗连Oracle数据举行判断账号和暗码(MD5加密)是否和数据库划一,假如划一则提示登录乐成。
开发环境:Windows10+QT5.14.2+Oracle11G R2
操纵步调:

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







2、计划界面并修改代码:
2.1修改项目配置文件,添加sql字符串体现要对数据库举行操纵。

2.2登录界面LoginForm计划

2.3编写登录界面代码
LoginForm.h代码如下:
  1. #ifndef LOGINFORM_H
  2. #define LOGINFORM_H
  3. #include <QMainWindow>
  4. #include <QSqlDatabase>
  5. #include <QSqlQuery>
  6. QT_BEGIN_NAMESPACE
  7. namespace Ui { class LoginForm; }
  8. QT_END_NAMESPACE
  9. class LoginForm : public QMainWindow
  10. {
  11. Q_OBJECT
  12. public:
  13. LoginForm(QWidget *parent = nullptr);
  14. ~LoginForm();
  15. void initsql(); //初始化数据库
  16. private slots:
  17. void on_pushButton_clicked();
  18. QString encrypt(const QString &str);//自定义加密函数
  19. private:
  20. Ui::LoginForm *ui;
  21. QSqlDatabase db;
  22. QSqlQuery *query;
  23. };
  24. #endif // LOGINFORM_H
复制代码
  1. #include "loginform.h"
  2. #include "ui_loginform.h"
  3. #include <QStackedWidget>
  4. #include <QMessageBox>
  5. #include <QDebug>
  6. #include <QWidget>
  7. #include <QCryptographicHash>
  8. LoginForm::LoginForm(QWidget *parent)
  9. : QMainWindow(parent)
  10. , ui(new Ui::LoginForm)
  11. {
  12. ui->setupUi(this);
  13. initsql();//打开数据库连接
  14. }
  15. LoginForm::~LoginForm()
  16. {
  17. delete ui;
  18. }
  19. //登录验证账号密码是否正确
  20. void LoginForm::on_pushButton_clicked()
  21. {
  22. //获得用户和密码
  23. QString name=ui->lineEdit->text();
  24. QString password=ui->lineEdit_2->text();
  25. QByteArray ba = password.toUtf8();
  26. QByteArray md5Password = QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Md5).toHex();
  27. QString str=QString("select * from USER where UserName='%1' and Password='%2'").arg(name).arg(encrypt(password));
  28. qDebug()<<str;
  29. query=new QSqlQuery;
  30. query->exec(str);
  31. query->last();
  32. int record=query->at()+1;
  33. if(record==0){
  34.   QMessageBox::information(this,"提示","用户或密码不对",QMessageBox::Ok);
  35. }
  36. else{
  37.   QMessageBox::information(this,"提示","系统登录成功",QMessageBox::Ok);
  38. }
  39. }
  40. //MD5加密函数
  41. QString LoginForm::encrypt(const QString &str)
  42. {
  43. //字符串MD5算法加密
  44. QByteArray btArray;
  45. btArray.append(str);//加入原始字符串
  46. QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密算法
  47. hash.addData(btArray); //添加数据到加密哈希值
  48. QByteArray resultArray =hash.result(); //返回最终的哈希值
  49. QString md5 =resultArray.toHex();//转换为16进制字符串
  50. return md5.toUpper();
  51. }
  52. //初始化打开数据库连接
  53. void LoginForm::initsql()
  54. {
  55. /*若输出列表中出现QOCI8和QOCI,则表示驱动加载成功*/
  56. QStringList drivers = QSqlDatabase::drivers();
  57. foreach(QString driver, drivers)
  58. qDebug() <<"\t" << driver;
  59. //数据库连接
  60. db = QSqlDatabase::addDatabase("QOCI");
  61. db.setHostName("192.168.1.100");//数据库服务器ip
  62. db.setPort(1521);//数据库端口号
  63. db.setDatabaseName("orcl");//数据库名称
  64. db.setUserName("dbUserName");//数据库用户名
  65. db.setPassword("dbUserPassword");//数据库密码
  66. db.open();
  67. }
复制代码
3、按F5开始调试运行

4、代码地址:
https://codechina.csdn.net/xqf222/qtlogin/
到此这篇关于QT毗连Oracle数据库并实现登录验证的操纵步调的文章就先容到这了,更多干系QT毗连Oracle数据库内容请搜索脚本之家以前的文章或继承浏览下面的干系文章希望大家以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作