三层实例

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

对象的实例,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. PHP+redis实现超迷你全文检索

    2014年10月31日 11:45:39 情景: 我们平台有好多游戏, 运营的同事在查询某一款游戏的时候, 目前使用的是html的select下拉列表的展现形式, 运营的同事得一个个去找,然后选中,耗 ...

  2. hdu 1098 Lowest Bit 解题报告

    题目链接:http://code.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=2&problemid=22 ...

  3. Light OJ 1199 - Partitioning Game (博弈sg函数)

    D - Partitioning Game Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  4. linux常见问题集锦-2

    http://zhangge.net/1986.html 在此感谢作者分享 1.linux如何挂在windows下的共享目录 Shell 1 mount.cifs //192.168.1.3/serv ...

  5. centos 截图命令 screenshot

    [root@ok ~]# gnome-screenshot#全屏截图 [root@ok ~]# gnome-screenshot --interactive#自定义截图

  6. Java内存访问重排序笔记

    >>关于重排序 重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段. 重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境. > ...

  7. js checkbox

    js checkbox <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  8. PHP单引号和双引号的区别

    单引号和双引号的区别 .双引号 里的东西 输入的时候能判断是否 包含 变量,如果包含 变量 就一起输出 .单引号里的就不一样,不判断是否有变量,就全部当成 字符串 输出 .单引号解析的时间比双引号快 ...

  9. 使用MyEclipse Swing/Matisse

     经常使用JBuilder开发工具的人都知道,在JBuilder中开发Swing应用程序是比较方便的,虽然比不上曾经红遍一时的Visual Basic,但开发界面的工作确实被大大简化了.     JB ...

  10. 【jacob word】使用jacob,合并多个word为一个word文件

    将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...