加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB.NET版三层登录实例

发布时间:2020-12-17 07:42:06 所属栏目:百科 来源:网络整理
导读:上篇博客简单介绍了下三层架构,看着很简单,无非是功能去分层实现,每层有每层的职责,让数据在三层之间来回传输就可以了,从而更好地解耦,但是作为一个小小小菜鸟,一旦实际使用还是很伤脑筋的,下面以用户登录为例,来看看三层架构是如何被应用的。 UI层

上篇博客简单介绍了下三层架构,看着很简单,无非是功能去分层实现,每层有每层的职责,让数据在三层之间来回传输就可以了,从而更好地解耦,但是作为一个小小小菜鸟,一旦实际使用还是很伤脑筋的,下面以用户登录为例,来看看三层架构是如何被应用的。

UI层

向用户展现特定的数据,采集用户的输入信息和操作,与用户进行交互。

Public Class Form1
    Private Sub btnLogin_Click(sender As Object,e As EventArgs) Handles btnLogin.Click
        Dim manager As New LoginBLL.LoginManager  '实例化并引用
        Dim user As New LoginModel.UserInfo

        user.UserName = txtUserName.Text.Trim  '给实体层赋值
        user.Password = txtPassword.Text

        manager.UserLogin(user)  '调给B层并判断
        MessageBox.Show("登录用户" + user.UserName)
    End Sub
End Class
BLL层

BLL层是三层架构的核心,业务逻辑放到这一层,相当于数据的中转站了,分别从UI层和DAL层获取用户信息和数据信息,然后再回馈给这两层。

Public Class LoginManager
    Public Function UserLogin(ByVal user As LoginModel.UserInfo) As LoginModel.UserInfo
        Dim uDao As New LoginDAL.UserDAO  '实例化D层中UserDAO对象
        Dim Uuser As New LoginModel.UserInfo '定义实体层参数用来赋值
        Uuser = uDao.SelectUser(user)  '将实体user传给D层

        If IsNothing(Uuser.UserName) Then
            Throw New Exception("登录失败")
        Else
            MsgBox("登陆成功")
        End If
        Return Uuser  '将实体user返回到U层
    End Function
End Class
DAL层

这一层就是和数据库打交道了,执行数据库信息的增删改查。

Imports System.Data.SqlClient
Public Class UserDAO
    Public conn As New SqlConnection("Server=DESKTOP-5KMOCVI;Database=Login;User ID=sa;Password=123")  '连接数据库
    Public Function SelectUser(ByVal user As LoginModel.UserInfo) As LoginModel.UserInfo  '传实体UserInfo以便参数调用
        Dim sql As String = "SELECT ID,UserName,Password FROM USERS WHERE UserName=@UserName AND Password=@Password" 'SQL查询语句
        Dim cmd As New SqlCommand(sql,conn) '构造方法,执行和连接
        '增加两个参数@UserName、@Password
        cmd.Parameters.Add(New SqlParameter("@UserName",user.UserName))
        cmd.Parameters.Add(New SqlParameter("@Password",user.Password))

        conn.Open() '打开数据连接
        Dim reader As SqlDataReader = cmd.ExecuteReader '定义类型为sqlDatareader的变量reader,并执行SQL语句
        Dim Buser As New LoginModel.UserInfo  '实例化新的UserInfo
        '使用SqlDataReader对象Read()方法进行逐行读取
        While (reader.Read())
            Buser.UserName = reader.GetString(1) '获取第一列中的数据
            Buser.Password = reader.GetString(2) '获取第二列中的数据
        End While

        Return Buser  '返回对象
        conn.Close()  '关闭数据连接
    End Function
End Class
实体层

数据那么多,当然得定义一个实体来封装数据啦,用以在三层之间来回调用。

Public Class UserInfo
    Private _username As String '封装一些属性,用来在三层之间传输数据
    Public Property UserName As String
        Get
            Return _username
        End Get
        Set(value As String)
            _username = value
        End Set
    End Property
    Private _password As String
    Public Property Password As String
        Get
            Return _password
        End Get
        Set(value As String)
            _password = value
        End Set
    End Property
End Class

各层之间的引用:UI引用BLL,BLL引用DAL,Model被这仨都引用,除此之外没引用关系喽。

小结

这只是对三层架构的一个小小应用,对系统的分层体现了“高内聚,低耦合”的思想,然而这只是一个小小的起步,因为后面还有加了设计模式的七层~~小小小菜鸟,还得继续加油啊!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读