三层实例

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

对象的实例,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. Java for LeetCode 199 Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  2. HDU 5510 Bazinga (字符串匹配)

    题目:传送门. 题意:t 组数据,每组 n 个串,对于第 i 个串如果存在 1 到 i-1 中的某个串不是 i 的子串,那么这个第 i 个串符合题意,求 i 的最大值. 题解:KMP,AC自动机也可以 ...

  3. ionic添加admob广告教程

    1.在你的ionic项目中使用如下命令添加admob插件: cordova plugin add cordova-plugin-admobpro 2.添加完成后,在$ionicPlatform.rea ...

  4. Java问题排查工具箱[转载]

    转载自:http://hellojava.info/?p=517 作者:阿里毕玄 问题排查除了最重要的解决思路和逻辑推导能力外,工具也是不可缺少的一部分,一个好用的工具可以事半功倍,甚至在某些情况下会 ...

  5. Human Gene Functions(poj 1080)

    题目大意是:给定两组DNA序列,要你求出它们的最大相似度 每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大 /* 思路是很好想的,设f[i][j ...

  6. 使用jQuery简单实现产品展示的图片左右滚动功能

    今天要做一个产品展示功能,由于产品比较多,一屏展示不完,所以想要做一个通过点击进行翻页的效果,在网上找了几个都不大好用,最后只能自己动手写了. 效果如下所示: 原理比较简单:将要滚动显示的区域的CSS ...

  7. ajax该什么时候用

    第一.请求的提交是为了页面数据的显示,这时候用户一般不希望看到页面的刷新,是使用AJAX的一个最佳时候. 第二.如果请求提交后,用户能从页面感觉到提交结果,这时候,也最好不要有页面刷新,推荐使用AJA ...

  8. 亿条数据在PHP中实现Mysql数据库分表100张

    当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度.笔者做了一个简单的尝试,1亿条数据,分100张表.具体实现过程如下: 首先创建100张表: $i=0; while($i<=9 ...

  9. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)

    select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型, 原型: int select(int maxfd,fd_set *rds ...

  10. 神奇的HTML5离线存储(应用程序缓存)

    声明:本文为原创文章,如需转载,请注明来源并保留原文链接前端小尚,谢谢! 前言 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. HTML5引入 ...