三层架构实例 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 ...
随机推荐
- 转关于垂直切分Vertical Sharding的粒度
垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响. 关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越 ...
- DP:炮兵阵地问题(POJ 1185)
正确的打炮方式(大雾)(点我查看) 2015-08-21 问题是中文的,大家可以进去看看. 先说一个坑,这个问题我交了很多次,都没过,反正是WA到我烦了,都不知道哪里错了!!!怎么会有错,然后翻了一下 ...
- Android之记住密码与自动登陆实现
本文主要讲述了利用sharedpreference实现记住密码与自动登陆功能 根据checkbox的状态存储用户名与密码 将结果保存在自定义的application中,成为全局变量 布局文件 < ...
- 在windows下用toolbox玩会docker
哈哈哈.
- Windows中检测当前是否有窗口全屏
不时看到有人问起如何判断当前是否有窗口正处于全屏状态? 不过, 在解决这个问题之前先来解决一个简单的问题? 什么是全屏? 相当一部分人认为: 窗口如果是最大化的, 那么它就是最 ...
- DB2修改表字段
1:删除字段非空属性 alter table XXX alter column XXX drop not null 此特性需要DB2 9.0以上的版本 2:添加字段非空属性alter table XX ...
- [整理]android中几种常见的尺寸
获取屏幕宽高尺寸的三种代码形式 在Android上,目前我知道的获取屏幕尺寸的方法有三种不同的代码形式 方法1.在Activity中最常见的调用方式 WindowManager windowManag ...
- android JNI调用(转)
Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwi ...
- hdu2159
#include<bits/stdc++.h> #define MAX 155 using namespace std; struct Node { int exp; int pat; } ...
- js:数据结构笔记12--排序算法(2)
高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0] ...