VB.NET版的三层实例

学了VB.NET视频,学了三层视频,那么接下来就是要实现VB.NET版的三层实例了!这个在一开始还真的无从下手,但是通过和C#的对比,发现VB.NET和C#以及VB的语句结构,思想都差不太多,所以就硬着头皮去做了。

下面就是我对VB.NET版三层实例的思考:

首先:

由于C#的实例实现了,所以我就想先“照葫芦画瓢”,就按着视频中讲的思路,以及三层的利用来进行,碰到不会写的VB.NET的语句就上百度!算是基本上找到了一点感觉!

接下来:

我在查找VB.NET语句的时候,看到好多师哥都在用配置文件来连接数据库。这个配置文件我只是在学习设计模式的时候有过大概的了解,知识知道它和抽象工厂一起用可以方便数据库的更改!具体是什么还真的不了解!
下面是我从网上查到的配置文件的解释:
配置文件是随安装程序一起被安装到计算机上的文件,里面存放着安装好的应用程序运行时所需要的参数,我们可以打开配置文件,修改里面的参数,从而达到不需要修改代码就可以达到某种目的的效果。
那么怎么应用配置文件呢?
在VB.NET中配置文件一般设置在U层,具体内容如下图:
 
其中: <add key="name" value="我是远程服务器"/>
是主要的连接语句,我们在D层对数据库的操作时会用到配置文件,具体的代码为:
Private strConnection As String
strConnection = System.Configuration.ConfigurationManager.AppSettings("connString")
这里的connString就相当于配置文件中连接数据库语句中的“name”
我们再让D层引用这个配置文件,就可以写VB.NET的语句对数据库进行操作了!

最后:

我在写这个程序的时候,运行起来不论输入的对错,总是显示“登录成功!”,我知道是B层的逻辑肯定出错了,但是却不知道是哪里。所幸由郑浩同学和王海鹏同学给找出来了!非常感谢他们俩,从他们的讨论中我也学到了很多在写代码中非常迷惑的东西!对数据在三层怎么进行传递明白了好多!也许这也是团队合作的好处!

下面就是我的代码:

U层:
Imports System.Data.SqlClient

Public Class 登录窗体

    Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click

        Dim manager As LoginBLL.LoginManagement = New LoginBLL.LoginManagement()
        Dim userin As User类.userModol = New User类.userModol() '实例化实体类为user,这样就可以任意调用实体类中的任何信息了。
        Dim UserName As String
        Dim UserPWD As String

        UserName = txtUserName.Text '将实体类的用户名和密码付给一个变量进行类型转换
        UserPWD = txtPassword.Text
        userin = manager.userLogin(UserName, UserPWD) '调用B层的方法。核对数据库中是否有输入的用户名

        txtUserName.Text = ""
        txtPassword.Text = ""
        txtUserName.Focus()


    End Sub
End Class


D层:
Public Class LoginServer
    '打开数据库对数据进行操作,并返回实体类类型的用户名和密码
    '在这里用到了配置文件

    Private userinfo As New User类.userModol
    Private rs As SqlClient.SqlDataReader
    Private conn As SqlClient.SqlConnection
    Private com As SqlClient.SqlCommand
    Private strConnection As String
    '执行连接字符串,这里用到的是配置文件。  

    Public Sub New()

        conn = New SqlClient.SqlConnection
        '下面是最重要的一句(关于配置文件的应用)
        strConnection = System.Configuration.ConfigurationManager.AppSettings("connString")
        conn.ConnectionString = strConnection

    End Sub

    Public Function Query(ByVal userID As String, ByVal userPwd As String) As User类.userModol
        '从数据库中查询用户的用户名和密码,并返回到实体类中
        com = New SqlClient.SqlCommand("select * from Users where UserName='" + userID + "'and Password='" + userPwd + "'", conn)

        Try
            rs = com.ExecuteReader
            While (rs.Read)
                '将数据库中的用户名和密码赋给变量userinfo,从而传到user实体类中
                userinfo.userName = rs.Item("UserName")
                userinfo._userPWD = rs.Item("Password")
            End While
            Return userinfo
        Catch ex As Exception
            Throw ex
        Finally
        End Try

    End Function
End Class


B层:
Public Class LoginManagement
    '设计一个方法,用以得到实体类User类中的信息并进行逻辑判断
    Public Function userLogin(user As String, userPWD As String) As User类.userModol
        Dim userDAL As LoginDAL.LoginServer = New LoginDAL.LoginServer()
        Dim userInfo As User类.userModol = New User类.userModol()
        '将实体类中的信息和BLL类中的信息核对,如果正确,则返回给实体类。
        '同时将DAL类对数据库操作后的数据传给实体类。
        userInfo = userDAL.Query(user, userPWD)

        If (userInfo.userName Is Nothing) Then

            MsgBox("您的用户名和密码不匹配,或者不存在!")

        Else
            MsgBox("登录成功!")
        End If
        Return userInfo
    End Function
End Class


实体类:
Public Class userModol
    Dim user As String '用户名
    Dim userPWD As String '密码
    Dim Email As String

    Public Property userName() As String
        Get
            Return user
        End Get
        Set(value As String)
            user = 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
End Class



总结

师父验收我三层的时候说我写的三层大概的数据怎么传递都实现了,但是我B层传的参数,这一点非常不好。现在传的数据类型比较少可以用传参来完成,但是重构机房的时候传实体才是真正面向对象的体现!而且传实体也比传参数简单的多,不容易丢东西。另外就是我的命名不规范,这个我在重构中一定会改正的!



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值