上篇博客介绍了面向过程思维设计的vb.net登录界面,这篇文章就简单介绍一下我用三层架构思想实现的vb.net登录功能吧,还请高手多多指点,初次使用三层架构思想,使用难免有错误之处!
此登录界面只是简单的实现了与数据库连接,登录成功时提示:‘登录成功!’,登录失败时提示:'登录失败!'。单击取消按钮可退出此系统。
2.数据库设计
根据功能介绍,此数据库设计比较简单,在此我只设计了一张表,跟上篇博客中使用的数据库相同,在此展现下数据库表的内容。
UserInfo数据表表结构,如图
3.在vs2010中,vb.net的登录操作
运用三层架构思想来实现上机登录,不得不提提三层,看到下图了么,是不是对三层又有了深的认识。
三层架构各层之间的引用:
- DAL所在程序集不引用BLL和UI
- BLL需要引用DAL
- UI直接引用BLL,可能会间接引用DAL
- DAL 、BLL、 UI 都需要引用Entity
三层架构的具体应用原则:
- DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理;
- UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理;
- BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI。
下面说一下vb.net中登录的操作
看到这幅图了嘛,下面咱来说说各层之间的具体实现。
①对UI显示层,界面设计如图
Public Class UserLogin '单击确定按钮,判断登录成功与否。 Private Sub btnOk_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnOk.Click Dim LoginUser As New LoginEntity.e_UserInfo '定义一个LoginEntity.e_UserInfo对象 Dim Bcheck As New LoginBLL.LoginManager '定义一个LoginBLL.LoginManager对象 LoginUser.UserID = txtUserName.Text() LoginUser.Password = txtPassword.Text() '采集用户信息,展现登录结果 If Bcheck.SelectUIandEntity(LoginUser) Then MsgBox("登录成功!") Else MsgBox("登录失败!") End If End Sub '退出系统 Private Sub btnCancel_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnCancel.Click End End Sub End Class
②"业务逻辑层"代码设计
Imports LoginEntity Imports LoginDAL.UserDAO 'B层业务处理(逻辑),做判断 Public Class LoginManager Function SelectUIandEntity(ByVal User As LoginEntity.e_UserInfo) As Boolean Dim DalUser As New LoginDAL.UserDAO Dim EntityUser As New LoginEntity.e_UserInfo EntityUser.UserID = User.UserID EntityUser = DalUser.selectUserInfoFormUserInfoTable(EntityUser) '判断操作 If EntityUser.Password = User.Password Then Return True Else Return False End If End Function End Class
③ "数据访问层"代码设计
'引用命名空间 Imports System.Data.sqlClient Imports LoginEntity Public Class UserDAO '连接数据库 Dim sqlConnectStr As String = "server=waly-pc;database=Login;uid=sa;pwd=123456;" Dim sqlConnection1 As sqlConnection = New sqlConnection(sqlConnectStr) '自定义检查参数 Function selectUserInfoFormUserInfoTable(ByVal User As LoginEntity.e_UserInfo) As LoginEntity.e_UserInfo Dim sql As String = "select * from UserInfo where UserID='" & User.UserID & "'" 'sql语句 Dim cmd As sqlCommand = New sqlCommand(sql,sqlConnection1) '定义sqlCommand对象 Dim read As sqlDataReader '定义sqlDataReader对象 Dim UserDataTable As New DataTable '定义一个DataTable对象 Dim User1 As New LoginEntity.e_UserInfo Try sqlConnection1.Open() read = cmd.ExecuteReader() UserDataTable.Load(read) User1.UserID = UserDataTable.Rows(0)("UserID") '感觉这一行和下一行代码应该写到B层的,可是写过去总是出错 User1.Password = UserDataTable.Rows(0)("UserPassword") Return User1 Catch ex As Exception User1.Password = "" Return User1 Finally If Not IsNothing(sqlConnection1) Then sqlConnection1.Close() End If End Try End Function End Class
④ "实体层"代码设计
'引用命名空间 Imports System.Collections.Generic Imports System.Linq Imports System.Text '声明用户的两个属性值:UserID 和 Password Public Class e_UserInfo Private e_UserID As String Public Property UserID As String Get Return e_UserID End Get Set(ByVal value As String) e_UserID = value End Set End Property Private e_Password As String Public Property Password As String Get Return e_Password End Get Set(ByVal value As String) e_Password = value End Set End Property End Class
注:此Demo源码以上传至:VB.NET用户登录(三层架构思想)
原文链接:https://www.f2er.com/vb/260529.html