【VB.NET机房重构】.NET三层登录

2024-08-26 02:32
文章标签 登录 重构 net 三层 vb 机房

本文主要是介绍【VB.NET机房重构】.NET三层登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         重构这么久,刚摸出点门道,先来介绍一下.NET三层登录。

一、分析

       1、逻辑分析


2、前提准备



3、登录界面


二、代码实现


Entity层代码(UserInfoEntity和WorkLogEntity)

Public Class UserInfoEntity'定义变量Private struserID As StringPrivate strpassword As StringPrivate strlevel As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property Password() As StringGetReturn strpasswordEnd GetSet(value As String)strpassword = valueEnd SetEnd PropertyPublic Property Level() As StringGetReturn strlevelEnd GetSet(value As String)strlevel = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class

Public Class WorkLogEntityPrivate struserID As StringPrivate strloginTime As StringPrivate strlogoutTime As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property LoginTime() As StringGetReturn strloginTimeEnd GetSet(value As String)strloginTime = valueEnd SetEnd PropertyPublic Property LogoutTime() As StringGetReturn strlogoutTimeEnd GetSet(value As String)strlogoutTime = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class
DAL层代码(UserInfoDAL和WorkLogDAL)

Imports System.Data.SqlClient
Imports System.Data
Public Class UserInfoDAL''' <summary>''' 查询用户''' </summary>''' <param name="userinfoentity1"></param>''' <returns></returns>''' <remarks></remarks>Function SelectUser(ByVal userinfoentity1 As Entity.UserInfoEntity)Dim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn '获取SQL语句的内容Dim reader As SqlDataReader '定义SqlDataReader的变量reader'传递数据cmd.Parameters.Add(New SqlParameter("@UserID", userinfoentity1.UserID))cmd.Parameters.Add(New SqlParameter("@Password", userinfoentity1.Password))'定义SQL语句cmd.CommandText = "Select * from UserInfo where UserID=@UserID and Password=@Password and Status='True'"cmd.CommandType = CommandType.Textconn.Open() '打开数据库链接reader = cmd.ExecuteReader() '执行查询语句,生成一个DataReaderDim userinfoentity3 As New Entity.UserInfoEntity'读取查询到的数据,返回相应属性While reader.Read()userinfoentity3.UserID = reader.GetString(0)userinfoentity3.Password = reader.GetString(1)End WhileReturn userinfoentity3End Function
End Class

Imports System.Data.SqlClient
Imports System.Data
Public Class WorkLogDALPublic Function InsertUser(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn'传入数据cmd.Parameters.Add(New SqlParameter("@UserID", Entity.Common2.strCurrentUserID))cmd.Parameters.Add(New SqlParameter("@Status", True))worklogentity.LoginTime = Format(Now, "yyyy-mm-dd hh:mm:ss")cmd.Parameters.Add(New SqlParameter("@LoginTime", worklogentity.LoginTime))'定义SQL语句cmd.CommandText = "Insert into WorkLog(UserID,LoginTime,Status)values(@UserID,@LoginTime,@Status)"conn.Open()Dim num As Integer '表示插入命令的结果Dim flag As New Booleannum = cmd.ExecuteNonQuery '执行插入命令If num > 0 Thenflag = TrueElseflag = FalseEnd IfReturn flagEnd Function
End Class
BLL层代码(LoginBLL和AddWorkLogBLL)

Public Class LoginBLLPublic Function UserLogin(ByVal userinfoentity2 As Entity.UserInfoEntity) As Entity.UserInfoEntityDim userinfodal As New DAL.UserInfoDAL '实例化UserInfoDALDim userinfoentity4 As Entity.UserInfoEntity '定义一个UserInfoEntity的参数userinfoentity4 = userinfodal.SelectUser(userinfoentity2)'判断是否查询到记录If IsNothing(userinfoentity4.UserID) ThenMsgBox("登录失败,用户名和密码不正确!")ElseMsgBox("登录成功,进入系统!")End IfReturn userinfoentity4End Function
End Class

Public Class AddWorkLogBLLPublic Function AddWorkLog(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim worklogdal As New DAL.WorkLogDAL '实例化WorkLogDALDim flag As Boolean 'flag用于定义DAL层的方法WorkLog的返回结果flag = worklogdal.InsertUser(worklogentity)Return flagEnd Function
End Class
UI层代码

Public Class frmLoginPrivate Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.ClickDim userinfoentity As New Entity.UserInfoEntity '实例化UserInfoEntityDim worklogeneity As New Entity.WorkLogEntity '实例化WorkLogEntityDim userinfoentity5 As Entity.UserInfoEntity '定义一个实体层的参数'将界面中的数据传给实体层userinfoentity.UserID = txtUserID.Text.Trim()userinfoentity.Password = txtPassword.Text.Trim()'判断输入框是否为空If txtUserID.Text = "" ThenMessageBox.Show("用户名不能为空")ReturnEnd IfIf txtPassword.Text = "" ThenMessageBox.Show("密码不能为空")ReturnEnd If'调用B层,进行判断Dim loginbll As New BLL.LoginBLL '实例化LoginBLLuserinfoentity5 = loginbll.UserLogin(userinfoentity)'将正在登录的用户登录信息传给全局变量Dim strcommon As New Entity.Common2strcommon.CurrentUserID = txtUserID.Text.Trim()strcommon.CurrentPassword = txtPassword.Text.Trim()Dim flag As BooleanDim addworklogbll As New BLL.AddWorkLogBLL '实例化AddWorkLogBLLflag = addworklogbll.AddWorkLog(worklogeneity)Me.Visible = FalsefrmMain.Visible = TrueEnd Sub
End Class
运行结果:



总结:三层虽然很简单,但是也要认真的搞清楚,这是后面重构的基础。不管会不会,一定要不停的先去做,再不行先照着别人的敲出来,搞清楚各层的调用和跳转再自己重新敲,肯定会有收获。

这篇关于【VB.NET机房重构】.NET三层登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107297

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指