使用 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 到池中。除非超时,否则连接不会真正关闭。
我已经检查过 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 到池中。除非超时,否则连接不会真正关闭。