搭建三层架构

                                                     搭建三层架构

一、步骤
1.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginBLL”
如下图:



2.“添加”-“新建项目”-“VisualC#”-“类库”-“名称:LoginDAL”

如下图:




3.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginUI”

如下图:




4. “添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginModel”

如下图:




5.引用
右键点“解决方案”-“添加引用”,设置U层引用B层、D层,B层引用于D层(引用,单方性引用)。如下图:




6.三层建立后的效果图

如下图:




二、各层实现代码

实体层

Public Class User_Info

    '定义两个私有属性
    Private _UserID As String
    Private _UserPassword As String

    '定义属性过程,通过属性过程,允许其他类访问
    Public Property UserID As String
        '读数据  
        Get
            Return _UserID
        End Get
        '写数据  
        Set(value As String)
            _UserID = value
        End Set
    End Property

    Public Property UserPassword As String
        Get
            Return _UserPassword
        End Get
        Set(value As String)
            _UserPassword = value
        End Set
    End Property
End Class


B层

Imports Login.Model
Imports LoginDAL.UserDAO

'业务逻辑层  
Public Class LoginManager

    '自定义函数,判断用户名和密码是否正确  
    Public Function FunctionUI(ByVal user As Login.Model.User_Info) As Boolean

        '实例化实体层对象  
        Dim BLLUserInfo As New Login.Model.User_Info
        '实例化DAL层对象  
        Dim UserDAO As New LoginDAL.UserDAO



        '实体层对象,用来接受DAL层传来的数据  
        BLLUserInfo = UserDAO.FunctionDAL(user)

        '判读从UI层和DAL层传来的数据是否相等,也就是用户名和密码是否相同  
        '通过在BLL层自定义函数的参数,把UI层用户输入的数据传到BLL层  
        '最后,在BLL层对数据进行处理,返回结果值  
        If BLLUserInfo.UserID.Trim = user.UserID.Trim And BLLUserInfo.UserPassword.Trim = user.UserPassword.Trim Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

D层

Imports Login.Model
Imports System.Data.SqlClient

'定义链接数据库类  
Module DbUtil
    '定义链接数据库字符串 
    'server是服务器的名称,可以是local,IP地址,计算机名称;  
    'database是数据库的名称;  
    'userid是登录的用户名;  
    'pwd是登录的密码; 
    Public connString As String = "Server=DESKTOP-U1RMOKA;database=JIFANG;User ID=sa;Password=123"
End Module



'数据访问层  
Public Class UserDAO

    '自定义函数,查询和接收数据库中的数据  
    Public Function FunctionDAL(User As Login.Model.User_Info) As Login.Model.User_Info
        '定义实体层对象,接收来自数据库的数据  
        Dim DALUserInfo As New Login.Model.User_Info

        '定义数据库记录集  
        '定义一个读取器  
        '若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。  
        Dim conn As New SqlConnection(DbUtil.connString)
        Dim reader As SqlDataReader

        '具体的数据查询语句  
        Dim sql As String = "Select UserName,Password From User_Info Where UserName=@UserName And Password=@Password"
        Dim cmd As New SqlCommand(sql, conn)

        '获取SQL语句的具体内容  
        '获取上述SQL语句的具体类型,在此为Select  
        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text

        '添加命令参数  
        cmd.Parameters.Add(New SqlParameter("@UserName", User.UserID))
        cmd.Parameters.Add(New SqlParameter("@Password", User.UserPassword))

        '打开数据连接  
        '执行查询语句,并生成一个DataReader  
        conn.Open()
        reader = cmd.ExecuteReader()

        '读取查询到的数据,并返回给相应的属性  
        While reader.Read()
            '获取数据库中相应字段的数据  
            DALUserInfo.UserID = reader.GetString(0).ToString
            DALUserInfo.UserPassword = reader.GetString(1)
        End While

        '返回查询到的实体  
        '关闭连接  
        Return DALUserInfo
        conn.Close()
    End Function
End Class

U层

Imports Login.Model
Imports Login.BLL

'显示层  
Public Class FrmMain

    Private Sub btnLogin_click(sender As Object, e As EventArgs) Handles btnLogin.Click   '打开窗体

        '实例化实体层对象  
        Dim UIUserInfo As New Login.Model.User_Info     '用来接收用户的登录名和密码;
        '实例化BLL层的对象  
        Dim LoginManager As New BLL.LoginManager

        '将文本框中的字符串送给实体对象login.user使实体对象能够带上参数;  
        UIUserInfo.UserID = txtUserName.Text()
        UIUserInfo.UserPassword = txtPassword.Text()

        '把UI层的信息,传给DLL层中的自定义函数  
        '通过自定义函数的处理结果的返回值,判断用户是否登录成功  
        If LoginManager.FunctionUI(UIUserInfo) Then
            MsgBox("登陆成功!")
        Else
        End If
    End Sub

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click     '关闭窗体
        End
    End Sub
End Class

     我的分享到此结束,不足之处,还请指教。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值