在前段时间中学习到了三层的技术,当时对着那个视频做例子,一步一步来,到最后的成功,感觉对三层有了一个很好的理解了。所以就非常赶紧的拿过来了机房系统的登陆来了,结果非常费劲。用自己对三层的理解敲登陆阻力非常的大,不是这里出问题就是那里出问题,而且感觉到了对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层只是用来判断的,属于业务逻辑范畴,跟其他一切的用处无关。而实体层,就是在这三层中间来回传递信息的,把参数来来回回的传递用的。这种作用和视频中的说法一样,但是经过了登陆的实践来说就不光是一句空话了,而是对三层中的数据处理也有了认识。
这个登陆的例子不是白做的,实践也加深了对知识的理解,不光光停留在那些口头或纸面上的作用,更重要的是做出来,把效果展示出来。从而能够一点破面,对整个软件架构的分层做法更深理解。
时间: 2024-12-10 23:16:23