码迷,mamicode.com
首页 > Web开发 > 详细

.NET版三层登录

时间:2015-05-17 10:47:21      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

       看着视频敲了一遍登录的例子,好像只是知道了三层里有D层、B层、U层,每层都是相互独立的,然后将数据逐层的传递。但是具体是怎么实现的,还是有点蒙……

       在敲.NET版三层登录之前参考了很多人的博客,这才慢慢的下手,敲上一遍,就觉得有清楚了很多……

       首先,建立以下的Windows应用程序以及类库:

技术分享


实体类(Model)代码:

<span style="font-size:18px;">Public Class UserInfo
    Private _username As String
    'Private _ID As Decimal
    'Public Property ID As Decimal
    '    Get
    '        Return _ID

    '    End Get
    '    Set(value As Decimal)
    '        _ID = value
    '    End Set
    'End Property
    Public Property UserName As String
        Get
            Return _username
        End Get
        Set(ByVal value As String)
            _username = value

        End Set
    End Property
    Private _pwd As String
    Public Property Pwd As String
        Get
            Return _pwd
        End Get
        Set(value As String)
            _pwd = value

        End Set
    End Property

End Class
</span>


D层代码:(引用model实体类)

<span style="font-size:18px;">'引用命名空间
Imports System.Data
Imports System.Data.SqlClient
Imports Login.Model
'Imports LoginDAL



Public Class UserDAO
    '连接数据库
    'Dim sqlConnectStr As String = "sever=YU;database=Login;User ID =sa;Password=123456"
    'Dim sqlConnection1 As SqlConnection = New SqlConnection(sqlConnectStr)
    Public conn As New SqlConnection("server=YU;database=Login;User ID =sa;Password=123456")
    Public Function SelectUser(ByVal UserDAO As Login.Model.UserInfo) As Login.Model.UserInfo
        '传递实体参数UserInfo而不是id,name,这样也方便对实体中的参数进行调用
        Dim reader As SqlDataReader    '定义SqlDataReader对象
        Dim eUser As New Login.Model.UserInfo
        Dim sql As String = "select UserName,Password FROM Users WHERE UserName=@username and Password=@password"
        Dim cmd As New SqlCommand(sql, conn)   '定义sqlcommand对象

        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add(New SqlParameter("@username", UserDAO.UserName))
        cmd.Parameters.Add(New SqlParameter("@password", UserDAO.Pwd))

        conn.Open()
        reader = cmd.ExecuteReader
        While reader.Read()
            eUser.UserName = reader.GetString(0)
            eUser.Pwd = reader.GetString(1)

        End While
        Return UserDAO
        reader.Close()

    End Function
End Class
</span>


B层代码:(引用D层和model实体类)

<span style="font-size:18px;">Imports Login.DAL



Public Class LoginManager
    Public Function UserLogin(ByVal UserDAO As Login.Model.UserInfo) As Login.Model.UserInfo
        Dim uDao As New Login.DAL.UserDAO
        Dim eUser1 As New Login.Model.UserInfo

        eUser1 = uDao.SelectUser(UserDAO) '将数据传给D层
        '判断
        If IsNothing(eUser1.UserName) Then
            Throw New Exception("登录失败,请验证登录名和密码!")
        Else
            MsgBox("登录成功!")

            Return eUser1

        End If

    End Function

End Class
</span>

U层代码:(引用model实体类和B层)

<span style="font-size:18px;">Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        Try
            Dim eUser2 As New Login.Model.UserInfo
            Dim eUser3 As New Login.Model.UserInfo

            eUser2.UserName = txtUserName.Text.Trim '将U层数据传给实体
            eUser2.Pwd = txtPassword.Text

            Dim mgr As New Login.BLL.LoginManager '将数据传递给B层
            eUser3 = mgr.UserLogin(eUser2)
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString())
        End Try
    End Sub

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub
End Class</span>

      三层的特点是:U层、B层、D层都引用了实体类,但是实体类却不知道三层的存在。U层将数据传递给B层,B层进行处理,之后传递给D层,三层之间相互独立,如果哪一层发生变化,不会影响其他的层。总而言之:U层只负责显示和采集用户的信息和操作,B层只负责处理业务逻辑,D层只负责提供基本的数据访问。







.NET版三层登录

标签:

原文地址:http://blog.csdn.net/xingyu0806/article/details/45786861

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!