三层实例

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

对象的实例,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. 转关于垂直切分Vertical Sharding的粒度

    垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响. 关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越 ...

  2. DP:炮兵阵地问题(POJ 1185)

    正确的打炮方式(大雾)(点我查看) 2015-08-21 问题是中文的,大家可以进去看看. 先说一个坑,这个问题我交了很多次,都没过,反正是WA到我烦了,都不知道哪里错了!!!怎么会有错,然后翻了一下 ...

  3. Android之记住密码与自动登陆实现

    本文主要讲述了利用sharedpreference实现记住密码与自动登陆功能 根据checkbox的状态存储用户名与密码 将结果保存在自定义的application中,成为全局变量 布局文件 < ...

  4. 在windows下用toolbox玩会docker

    哈哈哈.

  5. Windows中检测当前是否有窗口全屏

    不时看到有人问起如何判断当前是否有窗口正处于全屏状态? 不过, 在解决这个问题之前先来解决一个简单的问题?         什么是全屏?     相当一部分人认为: 窗口如果是最大化的, 那么它就是最 ...

  6. DB2修改表字段

    1:删除字段非空属性 alter table XXX alter column XXX drop not null 此特性需要DB2 9.0以上的版本 2:添加字段非空属性alter table XX ...

  7. [整理]android中几种常见的尺寸

    获取屏幕宽高尺寸的三种代码形式 在Android上,目前我知道的获取屏幕尺寸的方法有三种不同的代码形式 方法1.在Activity中最常见的调用方式 WindowManager windowManag ...

  8. android JNI调用(转)

    Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwi ...

  9. hdu2159

    #include<bits/stdc++.h> #define MAX 155 using namespace std; struct Node { int exp; int pat; } ...

  10. js:数据结构笔记12--排序算法(2)

    高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0] ...