三层架构数据传递

说三层先说一个小故事。

       从前有三家邻居,一家姓张,一家姓李,一家姓王,姓张的和姓李的两家人各有一个儿子,而姓李的家是一个女孩,长得特别的漂亮,于是其他两家的的都想追求这个女孩,两个人人谁也不服谁,于是在那一天,两个人相聚到小树林,打了起来,打得是不相上下,后来两家人因为这个闹得很是不痛快!!这件事情让女孩子知道了,他觉得这两个人不该这样,于是女孩子就去劝说他们两个,而是找到了一个男孩,对他说,我们以前多么的好,现在不该因为我变成这样,在女孩子的劝说之下其中一个男孩子开始有了悔意,于是就说,你帮我传递一个话吧,说我晚上要请客,你可以帮我告诉他吗?女孩子很高兴的将这件事情告诉了另一个男孩子那个男孩子一听觉得自己也有不对的地方,于是让女孩子把他心里面想说让女孩高数那个要请客的男孩子于是两个人又和好了。

       女孩是就是实体类,也就是看成了一个整体的惨数,在两个男孩之间进行传递话,从而使两方面的关系变好了。


    用一个三层的登陆的小例子来说明吧!

实体类  也就是那个女孩的角色:


Public Class e_UserInfo
    Private e_UserName As String
    Public Property UserName As String
        Get
            Return e_UserName
        End Get
        Set(ByVal value As String)
            e_UserName = 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


//UI层判读层,在这里面定义了一个实体类(女孩进行数据的传递)用于判断

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对象


        If Trim(txtUserName.Text) = "" Then
            MsgBox("姓名不能空")
            Exit Sub
        ElseIf Trim(txtPassword.Text) = "" Then
            MsgBox("密码不能为空")
            Exit Sub
        Else


            LoginUser.UserName = txtUserName.Text()
            LoginUser.Password = txtPassword.Text()


        End If

        '采集用户信息,展现登录结果
        If Bcheck.SelectUIandEntity(LoginUser) = True Then//将数据传递
            MsgBox("登录成功!")
        Else
            MsgBox("登录失败!")
        End If
    End Sub


//B层的代码进行数据的判断

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 'D
        Dim EntityUser As New LoginEntity.e_UserInfo 'E//定义一个实体类进行将数据从UI层的传递B层


        EntityUser.UserName = User.UserName
        EntityUser = DalUser.selectUserInfoFormUserInfoTable(EntityUser)  // 将数据传递给D层进行查询


        '判断操作
        If EntityUser.Password = User.Password Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

Imports System.Data.SqlClient
Imports LoginEntity

//D层的代码    
Public Class UserDAO
    '连接数据库
    Dim sqlConnectStr As String = "server=lizhihua-PC;database=charge_sys;uid=sa;pwd=123456;"
    Dim sqlConnection1 As SqlConnection = New SqlConnection(sqlConnectStr)


    '自定义检查参数
    Function selectUserInfoFormUserInfoTable(ByVal User As LoginEntity.e_UserInfo) As LoginEntity.e_UserInfo//将实体类传递到D层进行查询
        Dim sql As String = "select * from User_Info where UserName='" & User.UserName & "'"      '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.UserName = Trim(UserDataTable.Rows(0).Item("UserName"))        
            User1.Password = Trim(UserDataTable.Rows(0).Item("PWD"))


            'label1.caption = (Trim(UserDataTable.Rows(0).Item("PWD")))
            'Print(Trim(UserDataTable.Rows(0).Item("PWD")))
            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




                     三层都有实体类,也就是一个参数 ,这个参数从U层的输入到 B层进行 ,再由B层传到D层进行查询,将查询结果返回到B层进行判断,最后回到UI层显示出来,也就相当于连个男孩子在女孩子的帮助下和好了。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值