三层架构实例 VB.NET版
三层实例
首先发现感慨,对于三成这块,用到都是一些面向对象的特征,尤其是对象的实例化。如果你不是很注意的话,那么,你就会一头雾水,就像我一样,慢慢的雾里看花,最后也是走出来的,不过用的事件是相当的。
对象的实例,vb.net 和C#是很好的选择。这里我先是用了c#,然后用的vb.net,它们的一些语法是有些不同的,声明,c#直接是在前声明, erVB.Net是在后声明,是类名称或类型在后紧跟。
然后说的一点就是命名空间的引用,出入不是很大,
Using 加核心命名为C#专用 ,imports +核心命名为vb.net的专用
当然也少不了添加引用了。
对于期间用到的数组和配置文件,这里不详细说明了。
简单说下配置文件。
两者的配置文件出入很小。
1. appSettings配置节
- <!--数据库连接串-->
- <?xmlversionxmlversion="1.0"encoding="utf-8" ?>
- <configuration>
- <startup>
- <supportedRuntimeversionsupportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5" />
- </startup>
- <appSettings>
- <clear/>
- <add key="connString"value="server=192.168.**.***;database=ThreeLayersSystem;uid=sa;password=123456;"/>
- </appSettings>
- </configuration>
注意这里的 KEY 和Value 是 对应出现的, 这个是远程反问数据库的实例 。
2 connectionStrings配置节:
- <?xmlversionxmlversion="1.0"encoding="utf-8" ?>
- <configuration>
- <startup>
- <supportedRuntimeversionsupportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5" />
- </startup>
- <connectionStrings>
- <clear />
- <add name="ConnectionStrings"connectionString="Data Source=192.168.**.***; DataBase=ThreeLayersSystem; User ID=sa; Password=123456"/>
- </connectionStrings>
- </configuration>
两者差别几乎很小。
下面说下具体的实例如果建造的
首先建立空白解决方案。

之后建立各层
依次为 添加新项目
表现层(windos窗体),业务逻辑层(类库),数据访问层(类库),实体层(类库)
然后添加各层之间的引用
表现层添加业务逻辑层和实体层
业务逻辑添加数据访问层和实体层
数据访问层添加实体层。
D层还要添加一个为 system.configuration的引用,是对配置文件的引用
下面为具体实例代码了,为VB.NET的代码示例
表现层为UI 代码如下
集中配置文件在U层,为开始的appsettings
以下为windos
窗体的代码
导入引用
- Imports CBLL
- Imports Model
- Public class form1
- PrivateSub cmdOk_Click(sender AsObject, e AsEventArgs) Handles cmdOk.Click
- Me.Login(txtUid.Text, txtPwd.Text)
- EndSub
- ''传递参数,并接受返回的参数
- Private usermanager AsNew BLL.Bll
- PublicSub Login(ByVal userID AsString, ByVal userPwd AsString)
- Dim equal AsStatus = usermanager.userManger(userID, userPwd)
- If (equal = Status.success) Then
- Dispose(userID)
- Me.Close()
- ElseIf (equal = Status.fail) Then
- MsgBox("用户名或密码错误")
- EndIf
- EndSub
- End class
业务逻辑层代码
- Imports DAL
- Imports System.Data.SqlClient
- Imports Model
- Namespace CBLL
- Public Class Bll
- '一个方法有几个返回值,几个参数,取决于界面层调用什么东西,也就是需求
- '新建返回为枚举类型的函数
- '对表现层传递的值进行判断,
- '验证成功与否,进行枚举判断。
- Public Function userManger(userID As String, userPwd As String) As Boolean
- Dim userDAL As New DAL.Dal
- Dim userinfo As New User
- userinfo = userDAL.Query(userID, userPwd)
- '判断密码和数据库的一样为true,否则为fail
- If (userinfo._userID <> userID Or userinfo._userPwd <> userPwd) Then
- Return False
- Else
- Return True
- End If
- End Function
- End Class
- End Namespace
数据访问层
- Imports Model
- Imports System.Data.SqlClient
- Imports System.Configuration
- Imports System
- Public Class Dal
- '定义私有变量
- Private userinfo AsnewUser
- Private rs As SqlClient.SqlDataReader
- Private conn As SqlClient.SqlConnection
- Private com As SqlClient.SqlCommand
- Private strConnection AsString
- '执行连接字符串,这里用到的是配置文件。
- PublicSubNew()
- conn = New SqlClient.SqlConnection
- strConnection = System.Configuration.ConfigurationManager.AppSettings("connString")
- conn.ConnectionString = strConnection
- Try
- conn.Open()
- Console.WriteLine("数据测试成功")
- Catch ex AsException
- Throw ex
- Finally
- 'conn.Close()
- EndTry
- EndSub
- PublicFunction Query(ByVal userID AsString, ByVal userPwd AsString) AsUser
- '查询用户信息并返回用户信息
- com = New SqlClient.SqlCommand("select * from T_User where userID='" + userID + "'and userPwd='" + userPwd + "'", conn)
- Try
- rs = com.ExecuteReader()
- While (rs.Read)
- userinfo._userID = rs.Item("userID")
- userinfo._userPwd = rs.Item("userPwd")
- EndWhile
- Return userinfo
- Catch ex AsException
- Throw ex
- Finally
- If Not IsNothing(conn) Then
- 'Close()
- EndIf
- EndTry
- EndFunction
- EndClass
实体 层 一个为数据库对应的字段,User类
- Imports System.Data
- Imports System.Data.SqlClient
- Imports System.Configuration
- Imports Model.Status
- PublicClassUser
- #Region"定义user表中各个属性变量"
- Private userID AsString''用户ID
- Private userPwd AsString''用户密码
- Private userName AsString''用户名
- #EndRegion
- #Region"获取数据库的变量"
- PublicProperty _userID AsString
- Get
- Return userID
- EndGet
- Set(value AsString)
- userID = value
- EndSet
- EndProperty
- PublicProperty UserState AsStatus
- Get
- Return state
- EndGet
- Set(value AsStatus)
- state = value
- EndSet
- EndProperty
- PublicProperty _userPwd AsString
- Get
- Return userPwd
- EndGet
- Set(value AsString)
- userPwd = value
- EndSet
- EndProperty
- #EndRegion
- EndClass
三层架构实例 VB.NET版的更多相关文章
- 三层登录实例VB.NET版详解---理论加实战篇
层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠:重复:层峦叠嶂|层出不穷.最后-量词,用于可以分出层次的事物,女孩儿强烈的第六感,三层中的层一定是 ...
- 三层登录实例VB.NET版具体解释---理论加实战篇
层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠.反复:层峦叠嶂|层出不穷.最后-量词,用于能够分出层次的事物.女孩儿强烈的第六感,三层中的层一定是 ...
- JavaWeb学习之三层架构实例(三)
引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...
- JavaWeb学习之三层架构实例(二)
引言 这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- 简单的web三层架构系统【第二版】
昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...
- C# 使用三层架构实例演示-winForm 窗体登录功能
---------------------------------------------------------------------------------------------------华 ...
- C#三层架构实例
对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看 实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张 ...
- SSH框架整合实现Java三层架构实例(一)
HTML前台发送请求代码: <tr> <td>选择收派时间</td> <td> <input type="text" name ...
随机推荐
- Android procrank , showmap 内存分析
(一)DDMS 的Heap Dump 1) Data Object:java object. 2) Class Object:object of type Class, e.g. what you'd ...
- java静态与非静态区别
这里的静态,指以static关键字修饰的,包括类,方法,块,字段. 非静态,指没有用static 修饰的. 静态有一些特点: 1.全局唯一,任何一次的修改都是全局性的影响 2.只加载一次,优先于非静态 ...
- 关于printf函数输出先后顺序的讲解!!
对于printf函数printf("%d%d\n",a,b);函数的实际输出顺序是这样的先计算出b,然后在计算a,接着输出a,最后在输出b:例子如下:#include<ios ...
- ***微信LBS地理位置开发+百度地图API(地理位置和坐标转换)
微信公众平台开发 - 获取用户地理位置 本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会 ...
- 经典创意slogan大全
一句好的广告语,能强烈的激发人的感情,产生心理认同感.对于广告人来说,无论走到哪里,最敏感的就是广告语.一句广告语,可能只有短短几个字或一两句话,却是一个品牌的精华所在.能不能第一时间吸引受众眼球,抓 ...
- 微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed ...
- linux tricks 之 container_of.
转载:http://blog.chinaunix.net/uid-20608849-id-3027972.html 由于内核中定义了很多复杂的数据结构,而它们的实例中的成员在作为函数参数传递的时,函数 ...
- C# Winform ListView使用
以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...
- 修改ViewPager调用setCurrentItem时,滑屏的速度
原文摘自: 修改ViewPager调用setCurrentItem时,滑屏的速度 在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCur ...
- 安装phpmyadmin
1.查看PHP版本 新建文本文档,填写下面内容: <?phpphpinfo();?>保存,然后更改文件名为phpinfo.php放到你域名根目录,然后通过你的域名+phpinfo.php浏 ...