山东定制型网站建设推广,德州万企互联网站制作,wordpress 和shopify,wordpress资源付费前言
在之前的两篇博客中QT C实战#xff1a;实现用户登录页面及多个界面跳转、QT C实践|超详细数据库的连接和增删改查操作|附源码分别详细讲解了#xff1a;登录界面的制作#xff08;UI布局、页面跳转、登录逻辑等#xff09;、QT如何连接Mysql数据库#xff0c;并进行…前言
在之前的两篇博客中QT C实战实现用户登录页面及多个界面跳转、QT C实践|超详细数据库的连接和增删改查操作|附源码分别详细讲解了登录界面的制作UI布局、页面跳转、登录逻辑等、QT如何连接Mysql数据库并进行增删改查。
在前者登录界面的实现中我们是把用户名和密码设死在代码内部的不涉及到数据库虽然这样很简单但是实际过程中还是不够人性化。今天我们要将这两个知识点结合起来如何在登陆中连接数据库实现用户登录。
Tips:本篇博客默认已经阅读前两篇博客并已经拥有如何连接数据库和设计登录的UI界面的基础固省略很多细节主要讲“变”。强烈建议先阅读前两篇博客
一、实现
1.1前言
在登录界面连接数据库调用connection.h中的createConnection()创建数据库连接。在关闭界面的函数内关闭数据库释放资源if (db.isOpen()) {db.close();
}// 然后从连接池中移除该连接
QSqlDatabase::removeDatabase(connection1);遍历数据库将用户名、密码依次和数据库中的信息进行对比若有一样则可以进入主界面。 ♀️使用 QSqlQuery 来执行一个查询并使用循环来遍历结果集
1.2具体
首先在登陆界面Login.cpp的构造函数中加入下面创建数据库连接的代码
//创建数据库连接if (!createConnection()) {return;}db QSqlDatabase::database(connection1);//注意db是定义在头文件中公共成员变量中的
public:Login(QWidget *parent nullptr);~Login();QSqlDatabase db;再就是主要修改登录界面的登录按钮的槽函数
//登录按钮对应槽函数登陆成功跳转到主功能界面or管理员界面
void Login::inlog_clicked() {//获取用户名和密码输入框中数据QString nameString ui.name-text();QString pswdString ui.pswd-text();//遍历数据库int non_flag 1;//标志数据库中没有该用户信息QSqlQuery query(db);query.exec(select * from user);//执行sql语句bool success query.exec(SELECT * FROM user);if (success) {while (query.next()) {//获取QString uName query.value(1).toString();QString uPwd query.value(2).toString();//QMessageBox::about(this, 显示, 用户名uName 密码uPwd);//比较if (nameString uName pswdString uPwd) {//创建功能主界面并显示new_QT_python* w new new_QT_python();this-hide();non_flag 0;w-show();db.close();QSqlDatabase::removeDatabase(connection1);break;}}if (non_flag) {QMessageBox::about(this, 警告, 用户名或密码错误);}}else {// 查询执行失败QSqlError error query.lastError();QString errorMessage error.text();QMessageBox::about(this, 数据库错误, 查询失败 errorMessage);}//if (nameString QString::fromLocal8Bit(admin) pswdString QString::fromLocal8Bit(123456)) {// Admin* w new Admin();// this-close();// w-show();//}//else if (nameString QString::fromLocal8Bit(user) pswdString QString::fromLocal8Bit(111111)) {// //创建功能主界面并显示// new_QT_python* w new new_QT_python();// this-close();// w-show();//}//else {// QMessageBox::about(this, 警告, 用户名或密码错误);// return;//}
}