主頁(yè) > 知識(shí)庫(kù) > QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟

QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟

熱門標(biāo)簽:鶴壁電話機(jī)器人價(jià)格 網(wǎng)貸外呼系統(tǒng)合法嗎 電銷套路機(jī)器人 杭州網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營(yíng)商 汽車4s店百度地圖標(biāo)注店 地圖標(biāo)注效果的制作 地圖標(biāo)注坐標(biāo)圖標(biāo) 安陽(yáng)企業(yè)電銷機(jī)器人供應(yīng)商 手機(jī)地圖標(biāo)注門店

目的:

本文實(shí)現(xiàn)QT登錄界面,輸入賬號(hào)和密碼后,系統(tǒng)連接Oracle數(shù)據(jù)進(jìn)行判斷賬號(hào)和密碼(MD5加密)是否和數(shù)據(jù)庫(kù)一致,如果一致則提示登錄成功。

開(kāi)發(fā)環(huán)境:Windows10+QT5.14.2+Oracle11G R2

操作步驟:

1、打開(kāi)QT軟件,創(chuàng)建一個(gè)新的Application項(xiàng)目

2、設(shè)計(jì)界面并修改代碼:

2.1修改項(xiàng)目配置文件,添加sql字符串表示要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。

2.2登錄界面LoginForm設(shè)計(jì)

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(); //初始化數(shù)據(jù)庫(kù)

private slots:
 void on_pushButton_clicked();

 QString encrypt(const QString str);//自定義加密函數(shù)

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();//打開(kāi)數(shù)據(jù)庫(kù)連接
}

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


//登錄驗(yàn)證賬號(hào)密碼是否正確
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,"提示","用戶或密碼不對(duì)",QMessageBox::Ok);
 }
 else{

  QMessageBox::information(this,"提示","系統(tǒng)登錄成功",QMessageBox::Ok);
 }

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

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

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

 hash.addData(btArray); //添加數(shù)據(jù)到加密哈希值

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

 QString md5 =resultArray.toHex();//轉(zhuǎn)換為16進(jìn)制字符串

 return md5.toUpper();
}
//初始化打開(kāi)數(shù)據(jù)庫(kù)連接
void LoginForm::initsql()
{
 /*若輸出列表中出現(xiàn)QOCI8和QOCI,則表示驅(qū)動(dòng)加載成功*/
 QStringList drivers = QSqlDatabase::drivers();
 foreach(QString driver, drivers)
 qDebug() "\t"  driver;

 //數(shù)據(jù)庫(kù)連接
 db = QSqlDatabase::addDatabase("QOCI");
 db.setHostName("192.168.1.100");//數(shù)據(jù)庫(kù)服務(wù)器ip
 db.setPort(1521);//數(shù)據(jù)庫(kù)端口號(hào)
 db.setDatabaseName("orcl");//數(shù)據(jù)庫(kù)名稱
 db.setUserName("dbUserName");//數(shù)據(jù)庫(kù)用戶名
 db.setPassword("dbUserPassword");//數(shù)據(jù)庫(kù)密碼
 db.open();

}

3、按F5開(kāi)始調(diào)試運(yùn)行

4、代碼地址:

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

到此這篇關(guān)于QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟的文章就介紹到這了,更多相關(guān)QT連接Oracle數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • docker配置openGauss數(shù)據(jù)庫(kù)的方法詳解
  • PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法
  • ubuntu linux下使用Qt連接MySQL數(shù)據(jù)庫(kù)的方法
  • 通過(guò)Qt連接OpenGauss數(shù)據(jù)庫(kù)的詳細(xì)教程

標(biāo)簽:泰安 柳州 銀川 酒泉 河源 南陽(yáng) 焦作 梧州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟》,本文關(guān)鍵詞  連接,Oracle,數(shù)據(jù)庫(kù),并,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章