目的:
本文實現(xiàn)QT登錄界面,輸入賬號和密碼后,系統(tǒng)連接Oracle數(shù)據(jù)進行判斷賬號和密碼(MD5加密)是否和數(shù)據(jù)庫一致,如果一致則提示登錄成功。
開發(fā)環(huán)境:Windows10+QT5.14.2+Oracle11G R2
操作步驟:
1、打開QT軟件,創(chuàng)建一個新的Application項目
2、設計界面并修改代碼:
2.1修改項目配置文件,添加sql字符串表示要對數(shù)據(jù)庫進行操作。
2.2登錄界面LoginForm設計
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ù)庫
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();//打開數(shù)據(jù)庫連接
}
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,"提示","系統(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進制字符串
return md5.toUpper();
}
//初始化打開數(shù)據(jù)庫連接
void LoginForm::initsql()
{
/*若輸出列表中出現(xiàn)QOCI8和QOCI,則表示驅(qū)動加載成功*/
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() "\t" driver;
//數(shù)據(jù)庫連接
db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("192.168.1.100");//數(shù)據(jù)庫服務器ip
db.setPort(1521);//數(shù)據(jù)庫端口號
db.setDatabaseName("orcl");//數(shù)據(jù)庫名稱
db.setUserName("dbUserName");//數(shù)據(jù)庫用戶名
db.setPassword("dbUserPassword");//數(shù)據(jù)庫密碼
db.open();
}
3、按F5開始調(diào)試運行
4、代碼地址:
https://codechina.csdn.net/xqf222/qtlogin/
到此這篇關(guān)于QT連接Oracle數(shù)據(jù)庫并實現(xiàn)登錄驗證的操作步驟的文章就介紹到這了,更多相關(guān)QT連接Oracle數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- docker配置openGauss數(shù)據(jù)庫的方法詳解
- PyQt中使用QtSql連接MySql數(shù)據(jù)庫的方法
- ubuntu linux下使用Qt連接MySQL數(shù)據(jù)庫的方法
- 通過Qt連接OpenGauss數(shù)據(jù)庫的詳細教程