【VB.net】三层登陆的代码实现

前端之家收集整理的这篇文章主要介绍了【VB.net】三层登陆的代码实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


上篇博客,我们学习了有关三层的一些理论知识。有关UI用户显示层、BLL业务逻辑层、DAL数据访问层,

Model层还有疑惑的小伙伴请戳VB.net】三层的理论认识

本篇博客是关于VB.net三层登陆功能代码实现。希望能给你带来一些收获,不足之处,希望你能在评论

里留下宝贵建议。

第一步:

我们还是看这张有关三层的包图,再次明确,三层之间的引用关系——U层引用了B层和EntityB层引用了

D层和EntityD层引用了Entity。(Entity就是下文的LoginModel 是模型实体的意思)


第二步:

打开VS2012,新建解决方案之后,我们要新建项目,语言选择是Visual Basic。除了LoginUIWindows

窗体类型之外,其它的LoginBLLLoginDALLoginModelEntity)都是类库类型。

新建项目后,在每一层的属性里,都要修改根命名空间的名称

举个栗子:

例如下图是D层的根命名空间的修改

D层的根命名空间未修改之前和程序集“LoginDAL”是一模一样的。我们需要在 LoginDAL之间加一个点,变 为Login.DAL。(Do you know why?)


按照上述方法,给B层,U层,Model修改完成后,我们的解决方案就成型啦。

下图为我的解决方案。


第三步:引用贴士

各层之间的引用要正确。Don't forget it

向上滚动滑轮,看好第一张三层的包图。

举个栗子:

U层为例,我们看看如何添加引用。

U层要引用B层和LoginModel。我们就右击LoginUI——>添加引用——>给要引用的解决方案里的项目前打上对勾。

其它的B层,D层大家自己动手尝试一下吧!(LoginModel是不要引用其它项目的,Do you know why?)

另外,我们下面的代码中也有涉及到引用。


第四步:各层代码的实现

1.从包含基础信息的LoginModel开始。

LoginModel

Public Class UserInfo

    '数据模型的信息,姓名 ID 密码
    Private T_UserName As String
    Public Property UserName() As String
        Get
            Return T_UserName
        End Get
        Set(ByVal value As String)
            T_UserName = value
        End Set
    End Property
    Private T_ID As Int32
    Public Property ID() As Int32
        Get
            Return T_ID

        End Get
        Set(ByVal value As Int32)
            T_ID = value
        End Set
    End Property

    Private T_Password As String
    Public Property Password() As String
        Get
            Return T_Password
        End Get
        Set(ByVal value As String)
            T_Password = value
        End Set
    End Property


    
End Class


2.下面该是数据库D层了,我们首先要做好的工作就是,要建立好数据库,以及新建一张用户表,在表中添加一则

用户信息。

然后,D层中DBunit(连接数据库)的代码

Imports System.Data.sqlClient
Public Class DBUtil
    '定义ConnString函数数据库连接
    Public Shared Function ConnString() As sqlConnection
        Dim cnStr As String
        '连接数据库需要的信息赋值给字符串cnStr
        cnStr = "Server=LOUISE; Database=VB.net Login; User ID=sa; Password=12"

        Dim cn As sqlConnection   '定义cn为一个数据库连接
        cn = New sqlConnection(cnStr) '实例化一个连接
        Return cn '返回这个连接
    End Function
End Class

UserDAO数据库相关操作)的代码

Imports System.Data.sqlClient
Imports System.Data
Public Class UserDAO
    '定义选择用户函数,user参数为model里的数据模型
    Public Function SelectUser(ByVal user As Login.Model.UserInfo) As Login.Model.UserInfo
        Dim cn As sqlConnection = DBUtil.ConnString
        Dim sql As String

        'sql为连接数据库的字符串
        sql = "SELECT * FROM T_Users WHERE UserID=@UserID AND Password=@Password"
        Dim cmd As sqlCommand = New sqlCommand(sql,cn) '定义一个sqlcommand函数用来传递参数信息

        cmd.Parameters.Add(New sqlParameter("@UserID",user.UserName))
        cmd.Parameters.Add(New sqlParameter("@Password",user.Password))

        cn.Open() '连接打开
        Dim reader As sqlDataReader '定义读取数据库信息的reader
        reader = cmd.ExecuteReader 'sqlcommand函数执行reader赋值给reader
        Dim uuser As New Login.Model.UserInfo
        While (reader.Read())
            uuser.ID = reader.GetString(0)
            uuser.UserName = reader.GetString(1)
            uuser.Password = reader.GetString(2)
        End While
        Return uuser



    End Function

End Class

3.下面紧接着我们来看看,B层的LoginManager(登陆业务逻辑)代码

Public Class LoginManager
    '公共函数UserLogin,定义一个实体层User
    Public Function UserLogin(ByVal User As Login.Model.UserInfo) As Login.Model.UserInfo  'user 什么意思?
        Dim uDAO As New Login.DAL.UserDAO 'B层需要引用D层数据库
        Dim uuser As Login.Model.UserInfo 'B层引用Entity,定义一个uuser

        uuser = uDAO.SelectUser(User)

        If IsNothing(uuser) Then
            Throw New Exception("登陆失败,请重新登陆。")
        Else
            If IsNothing(uuser.Password) Then
                Throw New Exception("登陆失败,请输入密码。")
            Else
                MsgBox("恭喜你,登陆成功啦!")
                Return uuser   '返回user实体
            End If
        End If


    End Function
End Class

4.最后我们看看U层(用户显示层)的代码

Public Class frmLogin

    Private Sub btnLogin_Click(sender As Object,e As EventArgs) Handles btnLogin.Click

        Dim manager As New Login.BLL.LoginManager
        Dim user As New Login.Model.UserInfo
        user.UserName = txtUserName.Text.Trim
        user.Password = txtPassword.Text

        manager.UserLogin(user)
        
    End Sub

    Private Sub frmLogin_Load(sender As Object,e As EventArgs) Handles MyBase.Load
        Me.AcceptButton = btnLogin
    End Sub
End Class

C# 版本的代码,已上传我的资源

本文小结:

以上是三层的全部代码实现,注释有待提高,三层的理解也在机房重构里愈来愈多。

层层架构,对于程序,对于代码,对于我们都是一个新征程的开始!Keep fighting

猜你在找的VB相关文章