三層架構數據傳遞

說三層先說一個小故事。

       從前有三家鄰居,一家姓張,一家姓李,一家姓王,姓張的和姓李的兩家人各有一個兒子,而姓李的家是一個女孩,長得特別的漂亮,於是其他兩家的的都想追求這個女孩,兩個人人誰也不服誰,於是在那一天,兩個人相聚到小樹林,打了起來,打得是不相上下,後來兩家人因爲這個鬧得很是不痛快!!這件事情讓女孩子知道了,他覺得這兩個人不該這樣,於是女孩子就去勸說他們兩個,而是找到了一個男孩,對他說,我們以前多麼的好,現在不該因爲我變成這樣,在女孩子的勸說之下其中一個男孩子開始有了悔意,於是就說,你幫我傳遞一個話吧,說我晚上要請客,你可以幫我告訴他嗎?女孩子很高興的將這件事情告訴了另一個男孩子那個男孩子一聽覺得自己也有不對的地方,於是讓女孩子把他心裏面想說讓女孩高數那個要請客的男孩子於是兩個人又和好了。

       女孩是就是實體類,也就是看成了一個整體的慘數,在兩個男孩之間進行傳遞話,從而使兩方面的關係變好了。


    用一個三層的登陸的小例子來說明吧!

實體類  也就是那個女孩的角色:


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層顯示出來,也就相當於連個男孩子在女孩子的幫助下和好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章