三层登录实例VB.NET版

上一篇博客用的是C#语言敲的三层登录实例,这篇博客就用VB.NET来敲下,正好也熟悉下代码和三层逻辑。

首先,建立相应的数据库


其次,建立如下项目,注意:U层建的是Windows窗体应用程序,其他项目则设置成类库的输出类型。


最后,在所建项目中添加代码

实体层:

''' <summary>
''' 实体层,存放多种属性
''' </summary>
''' <remarks></remarks>
Public Class Login
    '定义UserName属性
    Private _UserName As String
    Public Property UserName As String
        Get
            Return _UserName
        End Get

        Set(value As String)
            _UserName = value
        End Set
    End Property

    '定义PassWord属性
    Private _PassWord As String '
    Public Property PassWord As String
        Get
            Return _PassWord
        End Get
       
        Set(value As String)
            _PassWord = value
        End Set
    End Property




End Class

D层:

' 引用命名空间
Imports System.Data
Imports System.Data.sqlClient
Imports LoginMODEL

'D层,主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,需要引用实体层
Public Class UserDAO
    Public conn As New sqlConnection("server=ZY-PC;database=Login;user id=sa;password =1")          '创建数据库的连接
    Public Function SelectUser(ByVal User As Login) As LoginMODEL.Login         '传实体Login,方便对实体中的参数进行调用
        Dim reader As sqlDataReader         '定义类型为sqlDATAREADER的变量reader
        Dim mUser As New LoginMODEL.Login
        Dim sql As String = "select UserName,passWord from T_Users where UserName=@UserName and PassWord=@PassWord"
        Dim cmd As New sqlCommand(sql,conn)        '创建sqlcommand对象
        cmd.CommandText = sql                       '获取sql语句的具体内容
        cmd.CommandType = CommandType.Text          '获取上述sql语句的具体类型
        cmd.Parameters.Add(New sqlParameter("@UserName",User.UserName))
        cmd.Parameters.Add(New sqlParameter("@PassWord",User.PassWord))
        conn.open()        '打开数据连接
        reader = cmd.ExecuteReader()              '执行查询语句,并生成一个DataReader

        '读取查询到的数据,并返回给相应的属性
        While reader.Read()
            mUser.UserName = reader.GetString(0)            '第一个字段
            mUser.PassWord = reader.GetString(1)            '第二个字段
        End While
        Return mUser               '返回查询到的实体
        conn.Close()              '关闭连接

    End Function
End Class


B层:

Public Class LoginManager
    Public Function UserLogin(ByVal User As LoginMODEL.Login) As LoginMODEL.Login
        Dim uDao As New LoginDAL.UserDAO                '实例化D层中新的UserDAO对象
        Dim mUser As LoginMODEL.Login                  '定义一个类型为实体层参数,用户赋值

        mUser = uDao.SelectUser(User)

        '判断是否查询到记录
        If Isnothing(mUser.UserName) Then
            Throw New Exception("登录失败,请检查用户名和密码!")          '没有记录
        Else
            MsgBox("登录成功,恭喜!","提示框")         '有记录
        End If
        Return mUser            '返回实体

    End Function
End Class


U层:

Public Class Form1

    Private Sub btnLogin_Click(sender As Object,e As EventArgs) Handles btnLogin.Click
        Try
            '获得表现层的数据
            Dim muser As New LoginMODEL.Login              '实例化一个新的实体,用来传递B层的实体
            muser.UserName = txtUserName.Text.Trim           '将用户名传递给实体层的UserName
            muser.PassWord = txtPassWord.Text.Trim            '将密码传递给实体层的PassWord

            '调用B层,登录判断
            Dim mgr As New LoginBLL.LoginManager
            muser = mgr.UserLogin(muser)

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString())              '错误处理
        End Try
    End Sub

End Class



下面我们来看看运行结果







经过这两次“重写”的三层代码实例,不得不说,我对“你”更有感觉了,嘿嘿!

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...