VB.NET之旅-三层架构之登陆

初接触三层

  1. 三层是指显示层,业务逻辑层,数据访问层,是为“高内聚,低耦合”服务的
  2. 除了上述三层之外,一个程序中必须要有的还有实体层,我的理解是实体层中的实体是与数据库中的表相对的,而实体的属性是与数据表中字段相对的,大家还可以根据需要加入外观层,数据接口,抽象工厂层这都是后话,要根据程序的需要进行添加。就像我们今天要实现的登陆这个就不需要外观,数据接口,抽象共厂,其实就连业务逻辑层也可以省略,因为这里并没有逻辑运算。
  3. 显示层引用业务逻辑层,业务逻辑层引用数据访问层,三层均可根据需要引用实体层
  4. 最初敲登陆这个小例子,犯了一个小错误,就是

  1. 这个问题花了我一晚上的时间,也花了我旁边大神半个小时,但都无果。就在我要心灰意冷,将要咬舌自尽之时,我忽然注意到:

    1. 问:解决方案管理器中这四个项目是什么关系?答案是:它们是四个不同的程序集,从属于解决方案,但他们同时也可以被其它解决方案通过添加现有项目添加。(在VB.NET中,无论是解决方案,程序集,类,窗体,没有被添加前都被称为项目)

      1. 通过右击解决方案添加的现有项目是程序集。
      2. 通过右击程序集添加的现有项目是类或窗体。
      3. 点击菜单栏文件—>-新建的项目或打开的项目是解决方案
    1. 大家知道我犯的错误了吗?就知道你没看出来,我犯的错误就是,我将上述四个程序集的名称都改为了LogIn,所以出现了上述的错误。
  1. 下面来看一下我的代码,大家一定要理解我开头写的“初接触”三个字,写出这样的代码已经很不错了,大家不要嫌弃。

显示层

Imports LogIn.BLL
Imports LogIn.Model

Public Class frmLogin
    Public Sub btnLogIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogIn.Click
        Dim admininfo As AdminInfoEntity
        Dim manager As New adminBLL
        Dim _name As String
        Dim _password As String
        _name = txtAdminName.Text
        _password = txtAdminPwd.Text

        admininfo = manager.selectAdmin_info(_name, _password) '调用逻辑层,返回的admininfo可能为空,也可能不为空

        If admininfo Is Nothing Then
            MessageBox.Show("登陆失败")
        Else
            MessageBox.Show("登陆用户" + admininfo.Name)
        End If

    End Sub

    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub
End Class

业务逻辑层

Imports LogIn.Model
Imports LogIn.DAL

Public Class adminBLL
    Dim AdminInfo As AdminInfoEntity
    Dim AdminDAL As New AdminDAL

    '验证用户登录信息是否正确
    Public Function selectAdmin_info(ByVal name As String, ByVal password As String) As AdminInfoEntity

        AdminInfo = AdminDAL.getAdminInfo(name, password) '调用数据访问层,返回的admininfo可能为空,也可能不为空

        Return AdminInfo

    End Function

End Class

数据访问层

Imports System.Data.SqlClient
Imports System.Data
Imports System.Data.OleDb
Imports System

Public Class ConnectionToDB
    Public Function ConnectionToDB() As SqlConnection
        Dim con As New SqlConnection("Data Source=刘颖-PC;Initial Catalog=Room_Charge_System;User ID=sa;password=123456") '连接数据库
        con.Open()
        Return con
    End Function
End Class
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports LogIn.Model

Public Class AdminDAL
    Dim AdminInfo As AdminInfoEntity
    Dim con As New ConnectionToDB
    '得到用户信息
    Public Function getAdminInfo(ByVal name As String, ByVal password As String) As AdminInfoEntity
        '查表中的记录
        Dim cmd As New SqlCommand("select*from T_Admin_info where Name=" & "'" & name & "'" & "and Password=" & "'" & password & "'", con.ConnectionToDB())

        Dim reader As SqlDataReader
        reader = cmd.ExecuteReader()

        While (reader.Read()) '如果数据表中有用户名和密码都与文本框对应的记录,则利用new 关键字调用AdminInfoEntity构造函数,使admininfo不为空,并对其属性赋值
            AdminInfo = New AdminInfoEntity

            AdminInfo.ID = reader.GetString(0)
            AdminInfo.Name = reader.GetString(1)
            AdminInfo.Level = reader.GetString(2)
            AdminInfo.Password = reader.GetString(3)

        End While

        Return AdminInfo

    End Function

End Class

实体层

'用户类,分别提供了其他类可以调用的公有属性,也提供了供类内部成员调用的字段,其他类通过属性可以限制对字段的无条件进行操作,例如只读,只写,限定范围赋值。
Public Class AdminInfoEntity

    Dim _name As String
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
    Dim _id As String
    Public Property ID() As String
        Get
            Return _id
        End Get
        Set(ByVal value As String)
            _id = value
        End Set
    End Property
    Dim _level As String
    Public Property Level() As String
        Get
            Return _level
        End Get
        Set(ByVal value As String)
            _level = value
        End Set
    End Property
    Dim _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

VB.NET之旅-三层架构之登陆

时间: 2024-11-02 20:30:54

VB.NET之旅-三层架构之登陆的相关文章

[转]C#三层架构登陆实例

很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层的划分是物理上的划分. 表示层(UI),这个最容易理解,就是用户看到的主界面. 数据访问层(DAL),也不难理解,主要是负责数据的增删改查. 业务

三层架构下实现用户登陆C#

上篇文章讲到三层.接下来就通过一个实例具体的看怎么用三层实现用户登陆界面. 一.Model实体(LoginModel): namespace LoginModel { //添加类:UserInfo Model实体作用:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层 public class UserInfo { //定义用户属性 public int ID { get; set; } public string UserName { get; set; } public string Pas

C#三层架构登陆实例

很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层的划分是物理上的划分. 表示层(UI),这个最容易理解,就是用户看到的主界面. 数据访问层(DAL),也不难理解,主要是负责数据的增删改查. 业务

vb.Net三层架构实例——登录

封装给编程带来的巨大的好处我们已感受到了,面向对象编程思想已经深入人心. 有了面向对象思想做指导,软件得到了迅速 的发展.在这种发展趋势下,三层架构也随之出现了. 从物理结构上来说,三层可以是客户端.应用服务器.数据库服务器.从逻辑上来说是表现层(Presentation layer).业务逻 辑层(Business Logic Layer).数据访问层(Dataaccess layer).区分层次体现了"高内聚低耦合"的思想.在软件体系架构设 中,分层式结构是最常见,也是最重要的一种

31、三层架构、AJAX+FormsAuthentication实现登陆

三层架构 前段时间公司要求修改一个网站,打开后我疯了,一层没有都是调用的DB接口,遍地的SQL语句,非常杂乱. 什么是三层架构? 三层架构是将整个项目划分为三个层次:表现层.业务逻辑层.数据访问层.目的为了高内聚低耦合思想. 三层结构 表现层(UI):接受用户请求,数据的返回呈现. 业务逻辑层(BLL ):用来处理业务逻辑,处理用户提交的数据. 数据访问层(DAL):用来与数据库进行交互,处理增.删.改.差. 实体类对象(Model):用来存储实体类. 三层关系 UI表现层:接收用户输入的数据,

浅谈三层架构(2)

感受: 对于三层的学习,自己刚开始的感觉真的是一头雾水啊,当时真的出现了很烦躁的感觉,我想这种感觉的出现真的是很可怕的,就这样耽误了两天,在网上也搜寻者自己想要的资料,昨天四姐也好心给调试了一番,顿时把自己的大脑打通了,其实问题难不难,就在于能不能打开思路了! VB.NET的三层实现: 上篇文章主要是对于三层有了一个表面的理解,下面针对机房收费登陆界面来进行一下简单的理解: UI层主要就是表面的构建,多以需要使用windows窗体来完成,而其他BLL和DAL则不需要,之间建立一个类库则可以完成自

三层架构-----实践篇

上篇论述了三层的基本概念,作用,关系,现在展示下系统中用户登陆过程中简单应用三层结构设计思想. vb.NET的操作如下 首先建立以下windows应用程序以及类库 首先建立实体类 Public Class userInfo Private _username As String Public Property UserName As String Get Return _username End Get Set(ByVal value As String) _username = value E

三层架构与四大天王之前传

上篇文章我们介绍了一下三层架构的基础知识,这次就让我们来探寻一下他的运行机制吧. 1.实体层 (1)是什么     实体类--实体类其实是存放数据的,我们在数据库读取的数据就是存放在实体层里面的(是辅助数据库的映射,可以理解为传递数据的载体).实体类主要是作为数据管理和业务逻辑处理层面上存在的类别: 它们主要在分析阶段区分实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关.实体类对应数据库中一个表,实体类的每个属性对应表中相应

三层架构理解

三层架构是将整个业务分成:表示层,业务逻辑层,数据访问层,已达到"高内聚,低耦合"的思想:当一个软件系统较大时,采用分层的思想,可以降低复杂度. [划分] 经典三层可以按照物理和逻辑两种划分方式,物理的划分方式是基于物理硬件的结构来划分的,使系统更容易布局到实际应用中:逻辑划分则站在软件设计的角度进行的划分. [依赖关系] 添加的实体负责各层之间的数据传递. [功能] 三层的设计理念大大简化了设计复杂度,有利于开发过程的分工,提高各个逻辑层之间的复用,降低开发成本和开发时间.我们必须了