三层架构实例 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 ...
随机推荐
- 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 ...
- HDU 5510 Bazinga (字符串匹配)
题目:传送门. 题意:t 组数据,每组 n 个串,对于第 i 个串如果存在 1 到 i-1 中的某个串不是 i 的子串,那么这个第 i 个串符合题意,求 i 的最大值. 题解:KMP,AC自动机也可以 ...
- ionic添加admob广告教程
1.在你的ionic项目中使用如下命令添加admob插件: cordova plugin add cordova-plugin-admobpro 2.添加完成后,在$ionicPlatform.rea ...
- Java问题排查工具箱[转载]
转载自:http://hellojava.info/?p=517 作者:阿里毕玄 问题排查除了最重要的解决思路和逻辑推导能力外,工具也是不可缺少的一部分,一个好用的工具可以事半功倍,甚至在某些情况下会 ...
- Human Gene Functions(poj 1080)
题目大意是:给定两组DNA序列,要你求出它们的最大相似度 每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大 /* 思路是很好想的,设f[i][j ...
- 使用jQuery简单实现产品展示的图片左右滚动功能
今天要做一个产品展示功能,由于产品比较多,一屏展示不完,所以想要做一个通过点击进行翻页的效果,在网上找了几个都不大好用,最后只能自己动手写了. 效果如下所示: 原理比较简单:将要滚动显示的区域的CSS ...
- ajax该什么时候用
第一.请求的提交是为了页面数据的显示,这时候用户一般不希望看到页面的刷新,是使用AJAX的一个最佳时候. 第二.如果请求提交后,用户能从页面感觉到提交结果,这时候,也最好不要有页面刷新,推荐使用AJA ...
- 亿条数据在PHP中实现Mysql数据库分表100张
当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度.笔者做了一个简单的尝试,1亿条数据,分100张表.具体实现过程如下: 首先创建100张表: $i=0; while($i<=9 ...
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)
select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型, 原型: int select(int maxfd,fd_set *rds ...
- 神奇的HTML5离线存储(应用程序缓存)
声明:本文为原创文章,如需转载,请注明来源并保留原文链接前端小尚,谢谢! 前言 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. HTML5引入 ...