【问题标题】:Connection String in Constructor构造函数中的连接字符串
【发布时间】:2016-03-03 15:39:53
【问题描述】:

现在我可以通过执行以下操作在每个方法中调用它来在我的类中建立连接。

    Dim sConnectionString As String = ConfigurationManager.AppSettings("Blah")
    'Establish connection with db
    Dim cnSqlConnection1 As New SqlConnection(sConnectionString)

唯一的问题是我必须在每个方法中调用它。有人告诉我,最好为类创建一个构造函数,并将它使用的连接字符串传递给构造函数。

这是我的尝试,但似乎无法弄清楚,因为我仍然无法在方法中达到它。

Public Sub New(ByVal sConnectionString As String)
    sConnectionString = ConfigurationManager.AppSettings("Blah")
End Sub

最好的方法是什么?提前致谢。

【问题讨论】:

    标签: asp.net .net vb.net connection-string


    【解决方案1】:

    您应该将传递的连接字符串存储在所有类方法中都可用的全局变量中

    Public Clas MyClass
    
        Private String gs_conString
    
        Public Sub New(ByVal sConnectionString As String)
           gs_conString = sConnectionString
        End Sub
    
        Public Sub AMethod()
            'Establish connection with db
            Dim cnSqlConnection1 As New SqlConnection(gs_conString)
            .....
        End Sub 
        .....
    
    End Class
    

    当然这意味着每次创建此类的实例时,都需要将连接字符串传递给构造函数

    Dim cl As MyClass = new MyClass(ConfigurationManager.AppSettings("Blah"))
    

    所以每次创建实例时最好使用构造函数自动提取连接字符串

    Private String gs_conString
    
    Public Sub New()
       gs_conString = ConfigurationManager.AppSettings("Blah")
    End Sub
    

    【讨论】:

    • 正是我想要的
    【解决方案2】:

    使用第一个选项,将连接字符串放在构造函数中。您不希望您的班级直接依赖于<appSettings>

    你的类的接口应该指明它有什么依赖。当您将连接字符串放入构造函数时,该类会说:“嘿,我需要一个连接字符串!”

    如果该类调用<appSettings>,那么该类的用户无法知道该类希望在那里找到一个连接字符串,除非他们打开您的代码并阅读它。如果他们不知道连接字符串属于那里,那么他们将得到一个没有解释的空引用异常。

    这就提出了一个问题——无论你的类创建什么类,从哪里获取连接字符串以便它可以将它传递给构造函数?依赖注入就是答案。它使您能够以这种方式编写类,然后将其“连接起来”,以便将正确的参数传递给您的构造函数。

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2015-08-08
      • 2020-04-22
      相关资源
      最近更新 更多