强不知以为知 怎能善其事

               

    工欲善其事必先利其器! 而其器又是否真的锋利了呢?

    想要成为一个出色的程序员,于是乎我学习、练习,以为自己什么都会了,结果却经不起一个小小的考验! 

    上午米老师所讲的内容,所说的那个题,时时刻刻在我脑中萦绕着,自以为把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

到此为止呢,整个逻辑也就完成了,也就看到了登陆是否成功,另外还有贯穿三层之间的实体类  完成了整个过程 

在配上 登陆的时序图会更好理解了吧



  其实当自己亲自把逻辑理清楚了,动手去实践了,把不懂的疑问都弄明白了,那么事情也就顺理了,小程序给了自己一个教训。时刻谨记着了,否则怎么善其事呢! 


        

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值