QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟
目的:
本文實(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編寫(xiě)登錄界面代碼
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() { //獲得用戶(hù)和密碼 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,"提示","用戶(hù)或密碼不對(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ù)名稱(chēng) db.setUserName("dbUserName");//數(shù)據(jù)庫(kù)用戶(hù)名 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)文章希望大家以后多多支持腳本之家!
- QT連接MYSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
- Qt5連接并操作PostgreSQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例
- Qt入門(mén)學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)操作指南
- Qt連接MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)(保姆級(jí)成功版教程)
- Qt創(chuàng)建SQlite數(shù)據(jù)庫(kù)的示例代碼
- 通過(guò)Qt連接OpenGauss數(shù)據(jù)庫(kù)的詳細(xì)教程
- QT連接Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)步驟
- Qt操作SQLite數(shù)據(jù)庫(kù)的教程詳解
- 一篇文章詳解Qt中如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
相關(guān)文章
Oracle常見(jiàn)分析函數(shù)實(shí)例詳解
分析函數(shù)是Oracle專(zhuān)門(mén)用于解決復(fù)雜報(bào)表統(tǒng)計(jì)需求的功能強(qiáng)大的函數(shù),它可以在數(shù)據(jù)行分組然后計(jì)算基于組的某種統(tǒng)計(jì)值,并且每一組的每一行都可以返回一個(gè)統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于Oracle常見(jiàn)分析函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-04-04數(shù)據(jù)庫(kù)ORA-01196故障-歸檔日志丟失恢復(fù)詳解
這篇文章主要介紹了數(shù)據(jù)庫(kù)ORA-01196故障-歸檔日志丟失恢復(fù)詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10oracle增加表空間大小兩種實(shí)現(xiàn)方法
增加表空間大小:一種是為表空間增加數(shù)據(jù)文件/另一種方法是增加表空間原有數(shù)據(jù)文件尺寸,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-01-01云服務(wù)器centos8安裝oracle19c的詳細(xì)教程
這篇文章主要介紹了云服務(wù)器centos8安裝oracle19c的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Oracle監(jiān)聽(tīng)器服務(wù)不能啟動(dòng)的解決方法
這篇文章主要介紹了Oracle監(jiān)聽(tīng)器服務(wù)不能啟動(dòng)的解決方法,需要的朋友可以參考下2014-07-07