机房重构---七层登录下(配置文件的使用)

前言:

上面介绍了反射工厂,那么这篇文章来介绍一下怎么通过配置文件来实现数据库的更换。

内容:


7、配置文件


配置文件是放在U层的,有一个叫做App.config,这个就是配置文件。下面放上配置文件里面的部分东西。

 <connectionStrings>
     <!--数据库连接-->
    <add name="UI.My.MySettings.charge_sysConnectionString" connectionString="Data Source=杨楠;Initial Catalog=charge_sys;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="sqlConnStr" value="server=.;database=charge_sys;User ID=sa;Password=123456" />
    <add key="DB" value="DAL" />
    <!--DAL-类库名-->
    <!--DB-字符串,通过字符串找到对应的类库-->
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>


这里面有两个节点,一个是<connectionStrings>节点,一个是<appSettings>节点。


(1)<appSettings>节点


主要是用来存储应用程序配置信息,如文件路径,xml Web services URL 或存储在应用程序的 .ini文件中的任何信息。

例如:想要找到本地文件,可通过键/值对,来找到对应的文件。上面那个“DB”就是一个字符串,通过设定的字符


找到对应的类库。


--读取节点配置:

'定义变量,获得数据库连接字符串
Dim str As String = System.Configuration.ConfigurationSettings.AppSettings("sqlConnStr")


(2)<connectionStrings>节点


主要是用来配置数据库连接。如果要更换数据库,只需更改providerName。

<add name="UI.My.MySettings.charge_sysConnectionString" connectionString="Data Source=杨楠;Initial Catalog=charge_sys;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />
  <!--providerName="System.Data.SqlClient为默认值          说明使用的是SQlServer数据库-->
  <!--providerName="System.Data.OracleClient                  说明使用的是Oracle数据库-->
<add name="connstr" connectionString="Data Source=杨楠; Initial Catalog=charge_sys; User ID=sa;Password=123456" providerName="System.Data.OracleClient" />


--读取节点配置

Dim conn string =System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;  

8、BLL层


bll层为逻辑判断层,进行必要的逻辑判断。下面我们就来看看bll层是怎么进行判断的吧。

Imports System.Data.SqlClient
Imports Entity
Imports IDAL
Imports Factory

Public Class LoginBLL


    '检查用户是否存在
    Public Function ExistUser(ByVal UserInfo As Entity.Entity) As List(Of Entity.Entity)
        Dim factory As New Factory.LoginFactory      'Factory.LoginFactory()  
        Dim Iuser As IDAL.LoginIDAL
        Dim mylist As List(Of Entity.Entity)



        '调用检查用户的工厂方法
        Iuser = factory.CheckUserInfo()
        mylist = Iuser.selectUser(UserInfo)

        If mylist.Count = 0 Then
            Throw New Exception("登录失败,请检查用户名和密码是否正确")
        End If

        If mylist(0).State.Trim() = "True " Then
            Throw New Exception("该用户已登录,请勿重复登录!")
        Else
            '  MsgBox("登录成功,请进入系统")
            Return mylist
        End If




    End Function
    '更改登录状态
    Public Function ChangeStatus(ByVal UserInfo As Entity.Entity)
        Dim dt As Integer
        Dim UserFactory As New Factory.LoginFactory
        Dim IUserInfo As IDAL.LoginIDAL
        IUserInfo = UserFactory.CheckUserInfo()
        dt = IUserInfo.UpdataUserStatus(UserInfo)

        If dt > 0 Then
            Return True
        Else
            Return False
        End If


    End Function

    '插入工作记录
    Public Function AddWorkLog(ByVal worklog As Entity.WorkLogEntity)
        Dim dt As Integer
        Dim WorkFactory As New Factory.WorkLogFactory
        Dim IWorkLog As IDAL.IWorkLog
        IWorkLog = WorkFactory.CheckWorkLog()
        dt = IWorkLog.InsertWorkLog(worklog)
        If dt > 0 Then
            Return True
        Else
            Return False
        End If


    End Function

9、Facade层

Imports BLL
Imports Entity

Public Class LoginFacade

    '检查用户是否存在  
    Public Function CheckUser(ByVal UserInfo As Entity.Entity) As List(Of Entity.Entity)
        Dim isUserExists As New BLL.LoginBLL
        Dim mylist As List(Of Entity.Entity)

        mylist = isUserExists.ExistUser(UserInfo)
        Return mylist
    End Function

    '更改用户工作状态
    Public Function changeStatus(ByVal UserInfo As Entity.Entity)
        Dim dt As Integer
        Dim isUserExists As New BLL.LoginBLL
        dt = isUserExists.ChangeStatus(UserInfo)
        Return dt
    End Function
    '插入工作记录
    Public Function AddWorkLog(ByVal worklog As Entity.WorkLogEntity)
        Dim dt As Integer
        Dim isAddWorkLog As New BLL.LoginBLL
        dt = isAddWorkLog.AddWorkLog(worklog)
        Return dt


    End Function

End Class

10、UI层

用户交互界面,可进行简单的输入条件判断,不是不能进行判断。

例如:判断是否为空,是否是数字等等。

Imports Entity.Entity
Imports Facade.LoginFacade


Public Class Form1

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        End
    End Sub


    Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
        Dim worklog As New Entity.WorkLogEntity '实例化WorkLogEntity
        Dim facade As New Facade.LoginFacade            '定义一个外观层对象
        Dim UserInfo As New Entity.Entity               '实例化对象,用于各层传递数据
        Dim mylist As New List(Of Entity.Entity)


        If (txtUserID.Text = "" Or txtPWD.Text = "") Then
            MsgBox("用户名或密码不能为空", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtUserID.Focus()
            txtPWD.Focus()

            Exit Sub
        End If

        Try



            '将文本框中的值传给实体层对象让他带上参数
            UserInfo.userID = txtUserID.Text.Trim()
            UserInfo.PWD = txtPWD.Text.Trim()

            '判断用户能否登录
            mylist = facade.CheckUser(UserInfo)

            ' worklog.UserID = UserInfo.userID

            Entity.CommonVariable.CommonUserID = UserInfo.userID
            Entity.CommonVariable.CommonUserPWD = UserInfo.PWD



            '登录成功,更新用户的登录状态 
            facade.changeStatus(UserInfo)
            '更新Worklog 
            facade.AddWorkLog(worklog)
            'MessageBox.Show("charuchenggong")

            Select Case mylist(0).Level.Trim()
                Case "学生"
                    frMainStu.Show()
                Case "一般用户"
                    frmMain.Show()
                    frmMain.操作员ToolStripMenuItem.Visible = False
                    frmMain.管理员ToolStripMenuItem.Visible = False

                Case "操作员"
                    frmMain.Show()
                    frmMain.管理员ToolStripMenuItem.Visible = False
                Case "管理员"
                    frmMain.Show()


            End Select

            Me.Hide()

            'DataTable '表示一个内存中数据表,是一个临时保存数据的网络虚拟表,无需代码就可以简单的绑定数据库

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
            txtUserID.Focus()
            txtUserID.SelectAll()
            txtPWD.Text = ""

        End Try
    End Sub

    '获取与主机ip有关的地址列表
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim Addre() As System.Net.IPAddress
        Addre = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList
        Label3.Text = System.Net.Dns.GetHostName().ToString()
    End Sub
End Class


总结:


1、每一层都要引用下一层,需要我们好好掌握那个七层包图,了解各个层是怎样的调用关系,然后再添加引用。

2、每一层都要调用下一层的方法,需要我们先敲出下一层的方法,然后在调用该方法。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值