三层实例

首先发现感慨,对于三成这块,用到都是一些面向对象的特征,尤其是对象的实例化。如果你不是很注意的话,那么,你就会一头雾水,就像我一样,慢慢的雾里看花,最后也是走出来的,不过用的事件是相当的。

对象的实例,vb.net 和C#是很好的选择。这里我先是用了c#,然后用的vb.net,它们的一些语法是有些不同的,声明,c#直接是在前声明, erVB.Net是在后声明,是类名称或类型在后紧跟。

然后说的一点就是命名空间的引用,出入不是很大,

Using 加核心命名为C#专用 ,imports +核心命名为vb.net的专用

当然也少不了添加引用了。

对于期间用到的数组和配置文件,这里不详细说明了。

简单说下配置文件。

两者的配置文件出入很小。

1. appSettings配置节

  1. <!--数据库连接串-->
  2. <?xmlversionxmlversion="1.0"encoding="utf-8" ?>
  3. <configuration>
  4. <startup>
  5. <supportedRuntimeversionsupportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5" />
  6. </startup>
  7. <appSettings>
  8. <clear/>
  9. <add key="connString"value="server=192.168.**.***;database=ThreeLayersSystem;uid=sa;password=123456;"/>
  10. </appSettings>
  11. </configuration>

注意这里的 KEY 和Value 是 对应出现的, 这个是远程反问数据库的实例 。

 

2 connectionStrings配置节:

  1. <?xmlversionxmlversion="1.0"encoding="utf-8" ?>
  2. <configuration>
  3. <startup>
  4. <supportedRuntimeversionsupportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5" />
  5. </startup>
  6. <connectionStrings>
  7. <clear />
  8. <add name="ConnectionStrings"connectionString="Data Source=192.168.**.***; DataBase=ThreeLayersSystem; User ID=sa; Password=123456"/>
  9. </connectionStrings>
  10. </configuration>

两者差别几乎很小。

下面说下具体的实例如果建造的

首先建立空白解决方案。

之后建立各层

依次为  添加新项目

表现层(windos窗体),业务逻辑层(类库),数据访问层(类库),实体层(类库)

 然后添加各层之间的引用

 

 表现层添加业务逻辑层和实体层

 

业务逻辑添加数据访问层和实体层

 

 数据访问层添加实体层。

D层还要添加一个为 system.configuration的引用,是对配置文件的引用

下面为具体实例代码了,为VB.NET的代码示例

表现层为UI 代码如下

集中配置文件在U层,为开始的appsettings

以下为windos
窗体的代码

导入引用

  1. Imports CBLL
  2. Imports Model
  3. Public class form1
  4. PrivateSub cmdOk_Click(sender AsObject, e AsEventArgs) Handles cmdOk.Click
  5. Me.Login(txtUid.Text, txtPwd.Text)
  6. EndSub
  7. ''传递参数,并接受返回的参数
  8. Private usermanager AsNew BLL.Bll
  9. PublicSub Login(ByVal userID AsString, ByVal userPwd AsString)
  10. Dim equal AsStatus = usermanager.userManger(userID, userPwd)
  11. If (equal = Status.success) Then
  12. Dispose(userID)
  13. Me.Close()
  14. ElseIf (equal = Status.fail) Then
  15. MsgBox("用户名或密码错误")
  16. EndIf
  17. EndSub
  18. End class

业务逻辑层代码

  1. Imports DAL
  2. Imports System.Data.SqlClient
  3. Imports Model
  4. Namespace CBLL
  5. Public Class Bll
  6. '一个方法有几个返回值,几个参数,取决于界面层调用什么东西,也就是需求
  7. '新建返回为枚举类型的函数
  8. '对表现层传递的值进行判断,
  9. '验证成功与否,进行枚举判断。
  10. Public Function userManger(userID As String, userPwd As String) As Boolean
  11. Dim userDAL As New DAL.Dal
  12. Dim userinfo As New User
  13. userinfo = userDAL.Query(userID, userPwd)
  14. '判断密码和数据库的一样为true,否则为fail
  15. If (userinfo._userID <> userID Or userinfo._userPwd <> userPwd) Then
  16. Return False
  17. Else
  18. Return True
  19. End If
  20. End Function
  21. End Class
  22. End Namespace

数据访问层

  1. Imports Model
  2. Imports System.Data.SqlClient
  3. Imports System.Configuration
  4. Imports System
  5. Public Class Dal
  6. '定义私有变量
  7. Private userinfo AsnewUser
  8. Private rs As SqlClient.SqlDataReader
  9. Private conn As SqlClient.SqlConnection
  10. Private com As SqlClient.SqlCommand
  11. Private strConnection AsString
  12. '执行连接字符串,这里用到的是配置文件。
  13. PublicSubNew()
  14. conn = New SqlClient.SqlConnection
  15. strConnection = System.Configuration.ConfigurationManager.AppSettings("connString")
  16. conn.ConnectionString = strConnection
  17. Try
  18. conn.Open()
  19. Console.WriteLine("数据测试成功")
  20. Catch ex AsException
  21. Throw ex
  22. Finally
  23. 'conn.Close()
  24. EndTry
  25. EndSub
  26. PublicFunction Query(ByVal userID AsString, ByVal userPwd AsString) AsUser
  27. '查询用户信息并返回用户信息
  28. com = New SqlClient.SqlCommand("select * from T_User where userID='" + userID + "'and userPwd='" + userPwd + "'", conn)
  29. Try
  30. rs = com.ExecuteReader()
  31. While (rs.Read)
  32. userinfo._userID = rs.Item("userID")
  33. userinfo._userPwd = rs.Item("userPwd")
  34. EndWhile
  35. Return userinfo
  36. Catch ex AsException
  37. Throw ex
  38. Finally
  39. If Not IsNothing(conn) Then
  40. 'Close()
  41. EndIf
  42. EndTry
  43. EndFunction
  44. EndClass

实体 层  一个为数据库对应的字段,User类

    1. Imports System.Data
    2. Imports System.Data.SqlClient
    3. Imports System.Configuration
    4. Imports Model.Status
    5. PublicClassUser
    6. #Region"定义user表中各个属性变量"
    7. Private userID AsString''用户ID
    8. Private userPwd AsString''用户密码
    9. Private userName AsString''用户名
    10. #EndRegion
    11. #Region"获取数据库的变量"
    12. PublicProperty _userID AsString
    13. Get
    14. Return userID
    15. EndGet
    16. Set(value AsString)
    17. userID = value
    18. EndSet
    19. EndProperty
    20. PublicProperty UserState AsStatus
    21. Get
    22. Return state
    23. EndGet
    24. Set(value AsStatus)
    25. state = value
    26. EndSet
    27. EndProperty
    28. PublicProperty _userPwd AsString
    29. Get
    30. Return userPwd
    31. EndGet
    32. Set(value AsString)
    33. userPwd = value
    34. EndSet
    35. EndProperty
    36. #EndRegion
    37. EndClass

三层架构实例 VB.NET版的更多相关文章

  1. 三层登录实例VB.NET版详解---理论加实战篇

    层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠:重复:层峦叠嶂|层出不穷.最后-量词,用于可以分出层次的事物,女孩儿强烈的第六感,三层中的层一定是 ...

  2. 三层登录实例VB.NET版具体解释---理论加实战篇

    层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠.反复:层峦叠嶂|层出不穷.最后-量词,用于能够分出层次的事物.女孩儿强烈的第六感,三层中的层一定是 ...

  3. JavaWeb学习之三层架构实例(三)

    引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...

  4. JavaWeb学习之三层架构实例(二)

    引言 这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...

  5. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  6. 简单的web三层架构系统【第二版】

    昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...

  7. C# 使用三层架构实例演示-winForm 窗体登录功能

    ---------------------------------------------------------------------------------------------------华 ...

  8. C#三层架构实例

    对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看 实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张 ...

  9. SSH框架整合实现Java三层架构实例(一)

    HTML前台发送请求代码: <tr> <td>选择收派时间</td> <td> <input type="text" name ...

随机推荐

  1. 转MYSQL学习(四) 查询

    MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...

  2. Light OJ 1253 Misere Nim (尼姆博弈(2))

    LightOJ1253 :Misere Nim 时间限制:1000MS    内存限制:32768KByte   64位IO格式:%lld & %llu 描述 Alice and Bob ar ...

  3. WebSocket技术

    webSocket技术 在html5技术革新中,加入了WebSocket技术 1.webSocket实际是TCP连接 webSocket在最初将发送http连接请求到服务器端, 但是在header中加 ...

  4. 补丁vs错误(codevs 2218 错误答案)

    题目描述 Description 错误就是人们所说的Bug.用户在使用软件时总是希望其错误越少越好,最好是没有错误的.但是推出一个没有错误的软件几乎不可能,所以很多软件公司都在疯狂地发放补丁(有时这种 ...

  5. js选中当前菜单后高亮显示的导航条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 在ubuntu 14.04 64位系统上安装32位库

    转自:http://www.enjoydiy.com/2937.html 有些软件还是依赖32位的库,但是64位的系统已经成为现在的主流.以前的ubuntu可以通过下面的命令安装:           ...

  7. Debugging Chromium on Windows

    转自:https://www.chromium.org/developers/how-tos/debugging-on-windows For Developers‎ > ‎How-Tos‎ & ...

  8. C语言输出格式总结

    转自:http://www.cnblogs.com/scbzljstudy/archive/2011/02/28/1966887.html 1 一般格式    printf(格式控制,输出表列)    ...

  9. SpringBoot相关

    快速构建项目 第 1 步:将这个 Spring Boot 项目的打包方式设置为 war. <packaging>war</packaging> SpringBoot 默认有内嵌 ...

  10. ember.js:使用笔记3 活用{{bind-attr}}

    说明:属性值绑定(属性值有无引号都可以) 如果是非布尔值: 一般使用,绑定其值; 使用冒号时,绑定名称,如 :high -> high; 如果是布尔值: 如果值是true,绑定其名,这里要注意驼 ...