三层登录


上篇简单介绍了我对三层的认识:

http://blog.csdn.net/onlybymyself/article/details/43645813

这次关于登录:练习了两个版本:VB.NET和C#

在练习过程中,还了解了实体层:

     为更好地满足引用原则:

         1 DAL不引用BLL和UI;

         2 BLL需要引用DAL;

         3 UI直接引用BLL,可能间接引用DAL;

         4 避免互相引用。

     引进:实体层


     关于实体层,可以将其理解为:装载数据的容器或一个载体。

因为有些数据,所有层都要用,但又要避免相互引用,这就可以用实体层来解决~~~



关于登录,以.NET为例:

具体实现:

     输入正确用户名、密码:


     输入错误用户名或密码:


     点击取消:退出程序

数据库设计:建一个用户名、密码表即可(简单小登录)



VS中:



DAL层:只提供基本的数据访问,不包含任何业务相关的逻辑处理。

'引用命名空间
Imports System.Data.SqlClient
Imports LoginEntity

Public Class UserDAO
    '连接数据库
    Dim sqlConnectStr As String = "server=zhaohan;database=Login;uid=sa;pwd=123456;"
    Dim sqlConnection1 As SqlConnection = New SqlConnection(sqlConnectStr) 'SqlConnection:重新连接

    '自定义检查参数
    Function selectUserInfoFormUserInfoTable(ByVal User As LoginEntity.e_UserInfo) As LoginEntity.e_UserInfo
        Dim sql As String = "select * from UserInfo where UserID='" & User.UserID & "'"
        Dim cmd As SqlCommand = New SqlCommand(sql, sqlConnection1) '定义sqlcommand对象
        Dim read As SqlDataReader '定义sqldatareader对象
        Dim User1 As New LoginEntity.e_UserInfo
        Dim UserDataTable As New DataTable
        Try
            sqlConnection1.Open()
            read = cmd.ExecuteReader()
            UserDataTable.Load(read)
            User1.UserID = UserDataTable.Rows(0)("UserID")
            User1.Password = UserDataTable.Rows(0)("UserPassword")
            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

BLL层: 负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI.

Imports LoginEntity
Imports LoginDAL.UserDAO

Public Class LoginManager
    Function SelectUIandEntity(ByVal User As LoginEntity.e_UserInfo) As Boolean
        Dim DalUser As New LoginDAL.UserDAO
        Dim EntityUser As New LoginEntity.e_UserInfo

        EntityUser.UserID = User.UserID
        EntityUser = DalUser.selectUserInfoFormUserInfoTable(EntityUser)

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

End Class

UI层: 只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理。


Public Class UserLogin

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnOk.Click
        Dim LoginUser As New LoginEntity.e_UserInfo '定义LoginEntity.e_UserInfo对象
        Dim Bcheck As New LoginBll.LoginManager   '定义LoginBLL.LoginManager对象

        LoginUser.UserID = txtUserName.Text
        LoginUser.Password = txtPassword.Text
        '采集用户信息,展现登录结果
        If Bcheck.SelectUIandEntity(LoginUser) Then
            MsgBox("登录成功")
        Else
            MsgBox("登录失败")

        End If
    End Sub

    '退出系统

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        End

    End Sub
End Class


小结:

     通过学习三层,再敲一遍机房收费。同样的需求,不同的实现方式,让我们慢慢领悟码农和工程师的区别......



评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值