天天看点

三层登录实例(VB.NET版)

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

    首先,建立相应的数据库

三层登录实例(VB.NET版)

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

三层登录实例(VB.NET版)

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

    实体层:

''' <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 [email protected] and [email protected]"
        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
           

    下面我们来看看运行结果

三层登录实例(VB.NET版)
三层登录实例(VB.NET版)
三层登录实例(VB.NET版)
三层登录实例(VB.NET版)

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

继续阅读