使用 For 循环处理连接打开和关闭的最佳方法

Best way to handle connection open and close with a For loop

我已经检查过 here

我每次都在循环打开一个连接,我不确定 ASP.NET 是否处理它会影响性能,或者它是否识别此代码并自动优化它。我现在拥有的:

For i As Integer = 0 To 100
    cmd = New SqlCommand("UPDATE <table> where id=@id", myConnection)
    cmd.Parameters.Add(New SqlParameter("@id", i))
    Try
        myConnection.Open()
        cmd.ExecuteNonQuery()
    Catch ex As Exception
    Finally
        myConnection.Close()
    End Try
Next i

我如何更改此代码,使其不会每次都打开连接?将关闭和打开置于 For 循环之外?检查循环中是否存在打开的连接? 我很乐意查看最佳实践的代码示例。

首先,在VB.NET中打开和关闭连接实际上并没有打开和关闭数据库连接。相反,他们将检索连接池和连接池的 return 连接。因此,虽然仍然存在一些性能影响,但它非常小。

话虽如此,您仍然可以 re-use 建立连接,也许使用如下代码:

myConnection.Open()
For i As Integer = 0 To 100
    cmd = New SqlCommand("UPDATE <table> where id=@id", myConnection)
    cmd.Parameters.Add(New SqlParameter("@id", i))
    cmd.ExecuteNonQuery()
Next i
myConnection.Close()

您当然应该添加 try/catch/finally 或其他一些机制以确保 myConnection.Close() 在所有情况下都得到执行。这将确保连接 returned 到池中。除非超时,否则连接不会真正关闭。