码迷,mamicode.com
首页 > 其他好文 > 详细

用三层实现登陆的实例

时间:2015-04-01 09:40:44      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:三层架构   实例   

    在前段时间中学习到了三层的技术,当时对着那个视频做例子,一步一步来,到最后的成功,感觉对三层有了一个很好的理解了。所以就非常赶紧的拿过来了机房系统的登陆来了,结果非常费劲。用自己对三层的理解敲登陆阻力非常的大,不是这里出问题就是那里出问题,而且感觉到了对VB.NET的生疏感觉。所以只能从头开始继续深入的理解三层了,结果对着视频和那些资料,费了好长时间,终于在千呼万唤中实现了VB.NET版的登陆的三层,同时也感觉到了以前对三层的理解的确实肤浅了,特别是对B层和实体层的作用有了很大的认识。接下来展示自己的代码,并总结提高。

D层:

Imports System.Data
Imports System.Data.SqlClient
Imports JIFANG.ENTITY
Public Class userDAO

    '链接数据库
    Dim conn As SqlConnection = New SqlConnection("server=192.168.24.33;database=JIFANG;uid=sa;pwd=123456;")
    Dim reader As SqlDataReader
    Public Function SelectUser(u As user)

        '绑定链接的字符串命令
        Dim cmd As SqlCommand = conn.CreateCommand
        cmd.CommandText = "select * from UserInfo where worknum='" & u.worknum & "' and password ='" & u.password & "' and userlevel='" & u.userlevel & "'"
        cmd.CommandType = CommandType.Text

        '打开数据库,并定义数据读取方法
        conn.Open()
        'Dim reader As SqlDataReader
        reader = cmd.ExecuteReader

        '读取数据
        While (reader.Read)
            u.name = reader.GetString(1)
            u.registerdatetime = reader.GetDateTime(4)
            If IsDBNull(reader(5)) Then
            Else
                u.remark = reader.GetString(5)
            End If
            conn.Close()
            Return True
        End While
        conn.Close()
        Return Nothing
    End Function

    Public Function InsertUser(u As user)
        'Try
        conn.Open()
        Dim cmd1 As SqlCommand = conn.CreateCommand
        cmd1.CommandText = "select getdate()"
        cmd1.CommandType = CommandType.Text

        reader = cmd1.ExecuteReader
        
        Dim cmd As SqlCommand = conn.CreateCommand
        cmd.CommandText = "INSERT INT WorkUser(userlevel,name,worknum,ondate,offdate,remark) Values(@userlevel,@name,@worknum,@ondate,@offdate,@remark)"
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add(New SqlParameter("@userlevel", u.userlevel))
        cmd.Parameters.Add(New SqlParameter("@name", u.name))
        cmd.Parameters.Add(New SqlParameter("@worknum", u.worknum))
        cmd.Parameters.Add(New SqlParameter("@ondate", reader))
        cmd.Parameters.Add(New SqlParameter("@offdate", 0 - 0 - 0))
        cmd.Parameters.Add(New SqlParameter("@remark", u.remark))
        cmd.ExecuteNonQuery()
        conn.Close()
        Return True
        'Catch ex As Exception
        'Throw New Exception("插入错误!")
        'Return False
        'End Try
    End Function

End Class

B层:

Imports JIFANG.ENTITY
Imports JIFANG.DAL
Public Class loginmannage
    Public Function userLogin(u As user) ' As user

        Dim uDAO As New JIFANG.DAL.userDAO
        If uDAO.SelectUser(u) Then   '如果查询成功
            If uDAO.InsertUser(u) Then
                Return True
            Else
                Return False
            End If
        Else
            MsgBox("denglu shibai")
            Return False
        End If
    End Function
End Class

U层:

Imports JIFANG.BLL
Imports JIFANG.ENTITY
Imports System.Data
Public Class frmlogin
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim m As New JIFANG.BLL.loginmannage
        Dim u As New user
        u.worknum = txtusername.Text.Trim
        u.password = txtpassword.Text
        u.userlevel = cmbuserlevel.Text.Trim
        If m.userLogin(u) Then
            Dim main As New frmmain
            main.Show()
            Me.Close()
        Else
            Throw New Exception("错了。")
        End If
    End Sub

    Private Sub frmlogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
End Class

    通过前面的学习和后来的实践,对B层的业务逻辑层的作用有了一个实质的认识,这个层的作用就是业务逻辑判断来的,以登陆为例,在这个例子中,从U层和D层传过来的数据跟B层没有关系,B层只是用来判断的,属于业务逻辑范畴,跟其他一切的用处无关。而实体层,就是在这三层中间来回传递信息的,把参数来来回回的传递用的。这种作用和视频中的说法一样,但是经过了登陆的实践来说就不光是一句空话了,而是对三层中的数据处理也有了认识。

    这个登陆的例子不是白做的,实践也加深了对知识的理解,不光光停留在那些口头或纸面上的作用,更重要的是做出来,把效果展示出来。从而能够一点破面,对整个软件架构的分层做法更深理解。



用三层实现登陆的实例

标签:三层架构   实例   

原文地址:http://blog.csdn.net/wz537071/article/details/44786633

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