目的:
本文实现qt登录界面,输入账号和密码后,系统连接oracle数据进行判断账号和密码(md5加密)是否和数据库一致,如果一致则提示登录成功。
开发环境:windows10+qt5.14.2+oracle11g r2
操作步骤:
1、打开qt软件,创建一个新的application项目
2、设计界面并修改代码:
2.1修改项目配置文件,添加sql字符串表示要对数据库进行操作。
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(); //初始化数据库
private slots:
void on_pushbutton_clicked();
qstring encrypt(const qstring &str);//自定义加密函数
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();//打开数据库连接
}
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() <<"\t" << 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、代码地址:
到此这篇关于qt连接oracle数据库并实现登录验证的操作步骤的文章就介绍到这了,更多相关qt连接oracle数据库内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!