⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datalayer.vb

📁 使用Access数据库演示的任务分配管理程序 一个使用ADO.NET基于Microsoft Access数据库演示的任务分配管理的程序
💻 VB
字号:
'---------------------------------------------------------------------
'  This file is part of the Microsoft .NET Framework SDK Code Samples.
' 
'  Copyright (C) Microsoft Corporation.  All rights reserved.
' 
' This source code is intended only as a supplement to Microsoft
' Development Tools and/or on-line documentation.  See these other
' materials for detailed information regarding Microsoft code samples.
' 
' THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
' KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
' IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
' PARTICULAR PURPOSE.
'---------------------------------------------------------------------

Imports System.Net
Imports System.Threading
Imports System.Web.Services.Protocols

Imports Common

Public Enum DataLayerResult
    None = 0
    Success = 1
    ServiceFailure = 2
    UnknownFailure = 3
    ConnectionFailure = 4
    AuthenticationFailure = 5
End Enum

Public Class DataLayer

    Private m_Ticket As String = Nothing
    Private Const c_wsTimeout As Integer = 30000 '30 seconds

    Private m_CurrentUser As New Common.Business.User
    Private m_States As ArrayList
    Private m_Priorities As ArrayList

    Private m_Users As List(Of Business.User)
    Private m_Projects As List(Of Business.Project)

    Public ReadOnly Property CurrentUser() As Common.Business.User
        Get
            Return m_CurrentUser
        End Get
    End Property

    Public ReadOnly Property States() As ArrayList
        Get
            Return m_States
        End Get
    End Property

    Public ReadOnly Property Priorities() As ArrayList
        Get
            Return m_Priorities
        End Get
    End Property

    Public ReadOnly Property Users() As List(Of Business.User)
        Get
            LazyLoadUsers()
            Return m_Users
        End Get
    End Property

    Public ReadOnly Property Projects() As List(Of Business.Project)
        Get
            LazyLoadProjects()
            Return m_Projects
        End Get
    End Property

    Public Sub New()

        'CurrentUserInformation is a type that exists on the web service
        'hence we lose default implementation
        m_CurrentUser.UserID = -1
        m_CurrentUser.Email = String.Empty
        m_CurrentUser.FullName = String.Empty
        m_CurrentUser.Name = String.Empty
        m_CurrentUser.Password = String.Empty

    End Sub

#Region " Login "
    Public Function Login(ByVal userName As String, ByVal userPassword As String) As DataLayerResult
        'save the user information
        m_CurrentUser.Name = userName
        m_CurrentUser.Password = userPassword

        'try to get a ticket
        Dim ticketResult As DataLayerResult = GetAuthorizationTicket()

        If ticketResult = DataLayerResult.Success Then

            Return DataLayerResult.Success
        Else
            Return DataLayerResult.AuthenticationFailure
        End If
    End Function
#End Region

#Region " Auth Service "
    Private Function GetAuthorizationTicket() As DataLayerResult
        Try
            ' Note: Don't forget password decrypt / encrypt protection schemes here
            Dim facade As New Database.UserFacade
            Dim sql As String = Database.Columns.User.Name + "=""" + m_CurrentUser.Name + """"
            sql += " AND " + Database.Columns.User.Password + "=""" + m_CurrentUser.Password + """"

            Dim biz As Business.User = TryCast(facade.GetUserArrayWhere(sql)(0), Business.User)
            If Not biz Is Nothing Then
                m_Ticket = "Login_OK"

                ' Note: Password should probably be encrypted here
                m_CurrentUser = biz
                InitializeCache()
            End If


        Catch ex As Exception
            m_Ticket = Nothing
            Return HandleException(ex)
        End Try

        If m_Ticket Is Nothing Then
            'username/password failed
            Return DataLayerResult.AuthenticationFailure
        End If

        Return DataLayerResult.Success
    End Function

    Private Sub InitializeCache()
        InitializeStates()
        InitializePriorities()
    End Sub

    Private Sub InitializeStates()
        Dim facade As New Database.StateFacade
        m_States = facade.GetAllStates
    End Sub

    Private Sub InitializePriorities()
        Dim facade As New Database.PriorityFacade
        m_Priorities = facade.GetAllPriorities
    End Sub

    Private Sub LazyLoadUsers()
        m_Users = New List(Of Business.User)

        Dim facade As New Database.UserFacade
        m_Users.AddRange(CType(facade.GetAllUsers.ToArray(GetType(Business.User)), Business.User()))
    End Sub

    Private Sub LazyLoadProjects()
        m_Projects = New List(Of Business.Project)

        Dim facade As New Database.ProjectFacade
        m_Projects.AddRange(CType(facade.GetAllProjects.ToArray(GetType(Business.Project)), Business.Project()))
    End Sub

    Public Function UpdateCurrentUser() As DataLayerResult
        Try
            Dim facade As New Database.UserFacade
            facade.UpdateUser(m_CurrentUser)

        Catch ex As Exception
            Return HandleException(ex)
        End Try

        Return DataLayerResult.Success
    End Function

    Public Function GetAssignment(ByVal AssignedID As Integer) As Common.UserEventArgs
        Dim facade As New Database.UserFacade
        Dim user As Business.User = facade.GetUser(AssignedID)

        ' Assign a default user
        If user Is Nothing Then user = m_Users(0)
        Return New Common.UserEventArgs(user)
    End Function

#End Region

#Region " Helper Functions "
    Private Function HandleException(ByVal ex As Exception) As DataLayerResult
        LogError.Write(ex.Message & vbNewLine & ex.StackTrace)

        If ex.GetType() Is GetType(WebException) Then
            Return DataLayerResult.ConnectionFailure
        ElseIf ex.GetType() Is GetType(SoapException) Then
            Return DataLayerResult.ServiceFailure
        Else
            Return DataLayerResult.UnknownFailure
        End If
    End Function
#End Region

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -