三层架构实例 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配置节:

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

<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 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

 






 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值