工欲善其事必先利其器! 而其器又是否真的锋利了呢?
想要成为一个出色的程序员,于是乎我学习、练习,以为自己什么都会了,结果却经不起一个小小的考验!
上午米老师所讲的内容,所说的那个题,时时刻刻在我脑中萦绕着,自以为把VB学的也挺好,可简单的一道小题目却把我们这些人问住了,为什么答不上来? 学的VB学哪去了? 我们自己知道吗?
自命不凡的以为拥有了世界,可熟不知连小草都不属于你,我想对于我们眼高手低应该能描述的准确一点吧! 强不知以为知,怎能善其事 ?
由此联想到自己,还真是活灵活现的写照! 因为我是学过VB的,这么简单的东西我怎么能承认自己不会呢! 于是写啊写啊,写到最后那些代码自己都说不通了。学习VB是一回事,那么我目前学习三层不也是一样吗? 我觉着我学得挺好啊,该看的看了,该学的学了,什么理论啊也会啊,但让我描述描述三层怎么个思维逻辑时,说着说着就说不下去了,其实就是没有学会,不懂装懂。结果什么也没做好!就拿三层登陆的小例子来说,我做了,看代码 明白了,,可怎么就自己描述不出来呢?
下午静下心来,踏实的去学习这段知识,这才恍然大悟,之前我也曾在博客中写了关于三层的创建、登陆例子的知识,到今天才算是真正理解了。
U层
直接面向用户,拿登陆的小例子来说,用户看到的是下面的界面,用户只需要输入用户名和密码,点击确定即可,而U层所要做的工作就是将用户输入的用户名和密码值传给实体层的参数,实体层则把用户输入的消息告诉B层,这些就是U层需要干的事
实体类
Public Class userInfo
Public username As String
Public password As String
Public Property User_Name() As String
'实体层,存放我们需要的参数,例如登陆时需要的
'用户名和密码
Get
Return username
End Get
Set(value As String)
username = value
End Set
End Property
Public Property pass_word() As String
Get
Return password
End Get
Set(value As String)
password = value
End Set
End Property
End Class
U层
Public Class Form1
Private Sub btLogin_Click(sender As Object, e As EventArgs) Handles btLogin.Click
Dim user2 As Login.Model.userInfo
user2 = New Login.Model.userInfo
'实例化实体层的参数,将登陆输入进来的数传给实体
user2.User_Name = txtUserName.Text.ToString()
user2.pass_word = txtPassWord.Text.ToString()
Dim bll As Login.BLL.LoginLogic = New LoginLogic
If bll.User_logic(user2) Then
MsgBox("登陆成功")
Else
MsgBox("登陆失败")
End If
End Sub
End Class
BLL 层 业务逻辑层
B层则是存放一些算法的逻辑什么的,当U层将信息传给B层后,B层将这个信息通知D层,然后根据D层返回来的值做逻辑判断。
Public Class LoginLogic
Public Function User_logic(ByVal user1 As Login.Model.userInfo) As Boolean
'声明一个对象来实例化D层中的类,进而利用其中的方法
Dim dll As Login.DAL.LoginSelect = New Login.DAL.LoginSelect
Return dll.user_chaxun(user1)
End Function
End Class
DAL 数据访问层
D层在接到B层传来的信息后,也会进行相应的判断,而对于这个登陆的例子呢,需要打开数据库判断用户输入的数据是否存在,然后返回给B层相应的信息。接着B层会将逻辑判断后的信息返回给U层,进而U层也就将最终结果返回给用户了,这也就是我们能看到的,登陆成功或者是登陆失败。
Public Class LoginSelect
'数据库连接字符串
Dim str As String = "Data Source =192.168.24.74;Initial Catalog=chargeStudent;user ID =sa;password=123456"
Dim conn As SqlClient.SqlConnection
Public Sub New() '设计一个函数来打开数据库
conn = New SqlClient.SqlConnection
conn.ConnectionString = str
conn.Open()
End Sub
'接下来就要执行相应的命令和查询
Public Function user_chaxun(ByVal user As Login.Model.userInfo) As Boolean
Dim sqlStr As String
'查询命令字符串
sqlStr = "select * from user_Info where user_ID='" & user.User_Name & "' and user_PWD='" & user.pass_word & "'"
Dim strCmd As SqlClient.SqlCommand
strCmd = New SqlClient.SqlCommand(sqlStr, conn)
'strCmd.CommandText = sqlStr
'strCmd.Connection = conn
'执行命令并查询数据,将数据返回到datareader 中
Dim dr As SqlClient.SqlDataReader = strCmd.ExecuteReader
If dr.Read() Then
Return True
Else
Return False
End If
End Function
End Class
到此为止呢,整个逻辑也就完成了,也就看到了登陆是否成功,另外还有贯穿三层之间的实体类 完成了整个过程
在配上 登陆的时序图会更好理解了吧
其实当自己亲自把逻辑理清楚了,动手去实践了,把不懂的疑问都弄明白了,那么事情也就顺理了,小程序给了自己一个教训。时刻谨记着了,否则怎么善其事呢!