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

时间:2017-01-24 01:41:52

标签: asp.net vb.net for-loop database-connection

我已经检查了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 循环之外?检查循环中是否存在开放连接? 我很乐意看到最佳实践的代码示例。

1 个答案:

答案 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()在所有情况下都可以执行。这将确保连接返回到池。除非超时,否则连接实际上不会关闭。