<?xmlversion="1.0"encoding="utf-8" ?>" />
当前位置: 代码迷 >> VB >>
<?xmlversion="1.0"encoding="utf-8" ?>
  详细解决方案

<?xmlversion="1.0"encoding="utf-8" ?>

热度:5108   发布时间:2013-02-26 00:00:00
三层架构实例 VB.NET版

三层实例

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

对象的实例,vb.net C#是很好的选择。这里我先是用了c#,然后用的vb.net,它们的一些语法是有些不同的,声明,c#直接是在前声明, erVB.Net是在后声明,是类名称或类型在后紧跟。

然后说的一点就是命名空间的引用,出入不是很大,

Using 加核心命名为C#专用 imports +核心命名为vb.net的专用  

当然也少不了添加引用了。

对于期间用到的数组和配置文件,这里不详细说明了。

简单说下配置文件。

两者的配置文件出入很小。

 

1. appSettings配置节

<!--数据库连接串--><?xmlversion="1.0"encoding="utf-8" ?><configuration>    <startup>        <supportedRuntimeversion="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配置节:

<configuration> <startup> <supportedRuntimeversion="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 CBLLImports ModelPublic class form1PrivateSub 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("用户名或密码错误")        EndIfEndSubEnd class 



业务逻辑层代码

 

Imports DALImports System.Data.SqlClientImports ModelNamespace 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 ClassEnd Namespace


 

 数据访问层

Imports ModelImports System.Data.SqlClientImports System.ConfigurationImports SystemPublic 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.DataImports System.Data.SqlClientImports System.ConfigurationImports Model.StatusPublicClassUser#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#EndRegionEndClass 


 

4楼lishehe昨天 21:20
学习
3楼cjr15233661143昨天 21:10
很壮观啊 加油
2楼wang379275614昨天 20:08
学习
1楼jiben2qingshan昨天 19:16
顶一个
  相关解决方案