Vb.net 使用SqlConnection终止我的全局SqlConnection连接字符串

Vb.net 使用SqlConnection终止我的全局SqlConnection连接字符串,vb.net,class,using,sqlconnection,class-library,Vb.net,Class,Using,Sqlconnection,Class Library,我有一个全局类设置为 Public Class ReqGlobal Private Shared _sqlConn As SqlClient.SqlConnection Public Shared Property SqlConnection As SqlClient.SqlConnection Get Return _sqlConn End Get Set(value As SqlClient.SqlConnection) _s

我有一个全局类设置为

Public Class ReqGlobal
  Private Shared _sqlConn As SqlClient.SqlConnection

  Public Shared Property SqlConnection As SqlClient.SqlConnection
    Get
        Return _sqlConn
    End Get
    Set(value As SqlClient.SqlConnection)
        _sqlConn = value
    End Set
  End Property

  Private Sub New()
    ' Prevents users from making this an instance
  End Sub
End Class
然后在我的表单上运行以下代码:

Dim sqlConn as SqlConnection = ReqGlobal.SqlConnection
Using conn As SqlClient.SqlConnection = sqlConn 
            conn.Open()
            Using bulkCopy As SqlClient.SqlBulkCopy = New SqlClient.SqlBulkCopy(conn)
                bulkCopy.DestinationTableName = "tableName"

                bulkCopy.WriteToServer(dt)
            End Using
End Using
现在,当它结束使用时,它会像应该的那样清除conn中的连接字符串,但它也是如何清除ReqGlobal.SqlConnection中的连接字符串的

请有人解释一下我在这里做错了什么,以及为什么要清除这两个地方的连接字符串。这是一个类库,如果这很重要的话

End-Using在全局连接对象上调用Dispose方法,因此以后将无法使用它

不要使用全局连接。相反,在全局级别初始化conneciton字符串,并在每次执行查询时创建新的SqlConnection对象:

使用connection=New SqlClient.SqlConnection\u connectionString “你的代码 终端使用 End Using对全局连接对象调用Dispose方法,因此以后将无法使用它

不要使用全局连接。相反,在全局级别初始化conneciton字符串,并在每次执行查询时创建新的SqlConnection对象:

使用connection=New SqlClient.SqlConnection\u connectionString “你的代码 终端使用 由于SqlConnection是引用类型,因此在using语句中分配conn时,将使用实际的全局连接,而不是副本。 当使用范围结束时,在全局连接上调用Disposed,它将变得无用。 对于线程安全问题以及其他问题,您不应该使用这样的全局连接。 我建议在using语句中使用全局类中的连接字符串创建新连接,或者在全局类中调用创建连接的方法

Public Class ReqGlobal
   private shared _cnnStr As string = "someConnectionString"

   Public Shared Function GetConnection() As DbConnection
      Dim con = new SqlClient.SqlConnection(_cnnStr)
      con.Open()
      return con
   End Function

End Class
用法

由于SqlConnection是引用类型,因此在using语句中分配conn时,将使用实际的全局连接,而不是副本。 当使用范围结束时,在全局连接上调用Disposed,它将变得无用。 对于线程安全问题以及其他问题,您不应该使用这样的全局连接。 我建议在using语句中使用全局类中的连接字符串创建新连接,或者在全局类中调用创建连接的方法

Public Class ReqGlobal
   private shared _cnnStr As string = "someConnectionString"

   Public Shared Function GetConnection() As DbConnection
      Dim con = new SqlClient.SqlConnection(_cnnStr)
      con.Open()
      return con
   End Function

End Class
用法

共享连接?啊!默认情况下,您有一个连接池,用于管理引擎盖下的物理连接。不需要可能导致多个问题的共享连接。共享连接?啊!默认情况下,您有一个连接池,用于管理引擎盖下的物理连接。不需要共享连接,这可能会导致多个问题。