我已经检查了here。
我每次循环打开一个连接,我不确定ASP.NET是否通过性能命中处理它,或者它识别此代码并自动优化它。我现在拥有的:
src
我如何更改此代码,以便每次都不会打开连接?将结束和开放带到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
循环之外?检查循环中是否存在开放连接?
我很乐意看到最佳实践的代码示例。
答案 0 :(得分:0)
首先,在VB.NET中打开和关闭连接实际上并不打开和关闭数据库连接。相反,它们将检索并返回与连接池的连接。因此,虽然仍有一些性能影响,但它是非常小的。
话虽这么说,你仍然可以重新使用连接,也许使用这样的代码:
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()
在所有情况下都可以执行。这将确保连接返回到池。除非超时,否则连接实际上不会关闭。