好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

#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() <<" " << 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、代码地址:

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

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

原文链接:https://blog.csdn.net/xqf222/article/details/113361701

查看更多关于QT连接Oracle数据库并实现登录验证的操作步骤的详细内容...

  阅读:38次