乌龟漫步之机房三层登陆

       机房重构是对曾经的VB的机房收费系统推翻后运用VB.NET和设计模式以及分层进行构建的系统。
刚开始时只看着别人都用七层开始敲,但是自己确实不知道七层是如何出来的,更是不知从何下手,所以一拖就这么长时间过去了。才发现最可怕的不是问题的存在而是自己不去面对问题。当意识到的时候,自己已经被拉下了。所以一着急就直接上七层,不懂就只能看博客照葫芦画瓢,结果一想可知,逻辑上的项目根本行不通,自己也理解不通。后来师傅让我从最简单的三层开始敲,每到一个阶段,当自己发现问题时,自己就会想着办法去解决,这时在通过博客来寻找自己的需求。不然你直接按着别人的思路敲,那么你就不会知道一些方法、模式的真正需求。所以我就从七层重新回到了基础的三层。下面是我对三层机房的简单构建。

       首先是实体层,它里面的实体对应的则是数据库表里需要登录用到的用户表的字段

<span style="font-size:18px;">Public Class LoginEntity
    '定义实体类LoginEntity
    Private _userName As String
    Private _userPwd As String
    Private _userLevel As String
    '声明数据库中的字段信息
    Public Property userName As String
        Get
            Return _userName
        End Get
        Set(value As String)
            _userName = value
        End Set
    End Property

    Public Property userPwd As String
        Get
            Return _userPwd
        End Get
        Set(value As String)
            _userPwd = value
        End Set
    End Property

    Public Property userLevel() As String
        Get
            Return _userLevel
        End Get
        Set(value As String)
            _userLevel = value
        End Set
    End Property
End Class
</span>
     下面是显示层,即窗体的上的显示。它所需要的功能是将用户名和密码输入对应的文本框,通过确认从而进入系统内部。当然他的验证过程看似短暂,一眨眼的功夫,可是后方的验证过程可是比想象的复杂

 

Imports Charge.Bll.LoginBll
Imports Charge.Entity.LoginEntity
Public Class frmLogin

    Private Sub btnQuit_Click(sender As Object, e As EventArgs) Handles btnQuit.Click
        '退出按钮
        Me.Close()
    End Sub

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        '确认按钮

        '判断用户名和密码是否为空
        If txtName.Text = "" Then
            MsgBox("请输入用户名")
        End If

        If txtPwd.Text = "" Then
            MsgBox("请输入密码")
        End If

        '定义用户实体user,实例化Entity层的参数
        Dim user As New Charge.Entity.LoginEntity

        '将文本框内容赋予实体
        user.userName = Trim(txtName.Text)
        user.userPwd = Trim(txtPwd.Text)

        Dim Buser As New Bll.LoginBll
        If Buser.CheckUser(user) = True Then
            MsgBox("登陆成功")
        Else
            MsgBox("登陆失败")
        End If


    End Sub

    Private Sub frmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        txtName.Select()   '用户名文本框在窗体载入时获得活动焦点
        txtName.Focus()
    End Sub
End Class

接下来是D层。简单的说D层就是与数据库打交道的层级。在这层里对数据库的数据进行增删改查。并把结果返回给B层。

Public Class DBString
    Public Shared ConnStr As String = "Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=mecharge;Data Source=YZX\SA;Password=123"
End Class

Imports System.Data.SqlClient
Imports Charge.DAL.DBString
Imports Charge.Entity.LoginEntity
Public Class LoginDAL
    '连接数据库字符串

    Dim conn As SqlConnection = New SqlConnection(DBString.ConnStr)

    Function CheckUser(ByVal user As Entity.LoginEntity) As Boolean
        '这段代码的主要作用就是防止SQL的注入
        Dim sql As String = "select * from user_Info where user_ID=@user_ID and user_PWD=@user_PWD"
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)
        cmd.Parameters.Add(New SqlParameter("@user_ID", user.userName))  '将参数值赋予参数集
        cmd.Parameters.Add(New SqlParameter("@user_PWD", user.userPwd))


        Dim reader As SqlDataReader '定义一个reader来读取数据

        conn.Open() '打开数据库
        reader = cmd.ExecuteReader()   '运行查询,结果放到reader
        If reader.Read() Then     '判断是否查到此条数据,并以Boolean值返回。
            Return True
        Else
            Return False
        End If

    End Function
End Class

最后是B层,逻辑判断层。对层的返回结果进行逻辑判断,随后返会给U

Public Class LoginBll
    Function CheckUser(ByVal user As Entity.LoginEntity) As Boolean
        Dim Duser As DAL.LoginDAL = New DAL.LoginDAL
        '检查用户是否存在,添加CheckUser的方法
        Dim flag As Boolean
        flag = Duser.CheckUser(user)
        Return flag
    End Function
   
End Class

   其实代码自己弄出来以后觉得还是挺简单的,可是当自己走出的第一步时,真心没有觉得它简单,走了好多弯路,写了好多没有用的语句或者是逻辑错误的语句。一个简单的三层都把自己绕的最后都差点绕进去了。更何况以后的扩建的七层。不过既然迈出第一步,(自己也知道自己的代码存在错误,在接下来的实践中需要不断完善)就坚定的迈出第二步吧,要相信车到山前必有路,当然最重要的要走而不是在原地等待路的出现。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值