微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.net三层登录

背景:真是欠的债迟早都要还。因为期末那段时间自己看视频的时候没有好好理解看着人家的代码就照敲,导致这次自己用VB.NET实现三层的时候遇到各种问题。

最大的问题:三层里面U层还有D层每层都有自己的实体,而且数量还不少。这也就罢了,可是他们三层之间需要通过实体实现沟通,这样调用哪个实体或者参数的问题就来了。此外他们是如何进行沟通的呢?

经过这几天的琢磨,三层的思想我才渐渐地领悟。原来他们之间的沟通就是通过实体调用各层的方法来实现的。而在参数这一块,

光说不练假把式,下面看看我VB.NET版本的三层登录吧。


先让我们看看U层的代码


Imports Model
Imports BLL

Public Class UI

    Private Sub Button1_Click(sender As Object,e As EventArgs) Handles btnOK.Click
        Dim User As New Model.usermodel '用来接收用户输入的用户名还有密码

        Dim UserB As Model.usermodel '用来接收B层返回的值

       
        User.UserName = txtUserName.Text
        User.Password = txtPassword.Text


        Dim mrg As New BLL.LoginBll() '实例化B层登录一个类
        UserB = mrg.UserLogin(User) '调用B层的方法C传递User,并且将B层返回的值赋给UserB 

        If UserB.UserName Is nothing Then

            MessageBox.Show("登录失败")


        Else
            MessageBox.Show("登录成功" + User.UserName)
        End If
        Return


    End Sub
End Class


<span style="font-family: Arial,Helvetica,sans-serif; background-color: rgb(255,255,255);">接下来看看B层的</span>


Imports Model
Imports DLL.UserD

Public Class LoginBll

    Public Function UserLogin(ByVal User As usermodel) As Model.usermodel '这里的usermodel指的是User参数返回值的类型。

        Dim users As New usermodel
        Dim UserD As New DLL.UserD

        users = UserD.SelectUser(User)


        If users.Password Is nothing Then

            Throw New Exception("登录失败")


        End If
        Return users


    End Function
End Class


接下来就是D层的


首先是数据库连接的类


Public Class DataCon

    Public Shared Function connstring() As String
        connstring = "Server=.;Database=Login;User ID=sa;Password=123"
    End Function

End Class


Imports System.Data
Imports System.Data.sqlClient

Imports Model

Public Class UserD

    Public Function SelectUser(ByVal User As usermodel) As usermodel

        Dim connd As New sqlConnection '实例化一个sql类型的连接
        Dim cmd As New sqlCommand '实例化一个sql命令(包括增删改查)

        connd = New sqlConnection(DataCon.connstring) 'connd调用数据库连接方法
        cmd.Connection = connd '指定cmd的连接

        cmd.CommandText = "select * from Users Where UserName=@UserName and Password=@Password" '指定cmd命令的类容
        cmd.Parameters.Add(New sqlParameter("@UserName",User.UserName))
        cmd.Parameters.Add(New sqlParameter("@Password",User.Password))
        cmd.CommandType = CommandType.Text
        connd.open()


        Dim reader As sqlClient.sqlDataReader '定义一个Reader用来保存查询结果
        reader = cmd.ExecuteReader()

        Dim UserD As New Model.usermodel '定义一个UserD来保存Reader的结果
        While (reader.Read())

            If (UserD) Is nothing Then

                UserD = New usermodel

            End If

            UserD.UserName = reader.GetString(1)
            UserD.Password = reader.GetString(2)

        End While
        connd.Close()

        Return UserD '返回UserD给B层然后进行判断。


    End Function

End Class



跟这些相比实体层就比较简单了。


Public Class usermodel

    Public _userName As String
    Public Property UserName() As String
        Get
            Return _userName
        End Get
        Set(ByVal value As String)
            _userName = value
        End Set
    End Property

   

    Public _password As String
    Public Property Password() As String
        Get
            Return _password
        End Get
        Set(ByVal value As String)
            _password = value
        End Set
    End Property
End Class


反思:东西多了看着就觉得很复杂,若是你在敲三层的时候也和我一样遇到类似的问题,建议你先多多调试成功的三层代码看看他们一步步是如何实现的,然后自己可以先敲U层和B层。现在回头来看三层,就觉得他是打包好了三个类模板,他们之间的沟通主要就是实体的方法调用来实现。

原文地址:https://www.jb51.cc/vb/257574.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐