Vb.net 处理命令/数据读取器对象
请从以下网页查看以下代码: SQLCommand对象未包装在Using语句中。然而,这个问题中的代码(例如)是: 我看到很多代码都包含数据读取器和命令,这些代码没有包装在Using语句中。命令和数据读取器实现IDisposable。是否必须使用语句/call.dispose将它们包装起来Vb.net 处理命令/数据读取器对象,vb.net,Vb.net,请从以下网页查看以下代码: SQLCommand对象未包装在Using语句中。然而,这个问题中的代码(例如)是: 我看到很多代码都包含数据读取器和命令,这些代码没有包装在Using语句中。命令和数据读取器实现IDisposable。是否必须使用语句/call.dispose将它们包装起来 我的一个想法是,当数据读取器和命令链接到的连接被释放时,它们会隐式关闭。正确吗?您应该始终使用和语句 您将在internet上看到大量断开的代码。断开连接时,数据读取器和命令未关闭或断开。它们不可用,因为它们引
我的一个想法是,当数据读取器和命令链接到的连接被释放时,它们会隐式关闭。正确吗?您应该始终使用
和语句
您将在internet上看到大量断开的代码。断开连接时,数据读取器和命令未关闭或断开。它们不可用,因为它们引用了一个不再活动的连接
不处理它们不会给数据库带来任何压力,但会给垃圾收集器带来更多的工作
当对象被释放时,它们将从终结器队列中移除,以便垃圾收集器可以一次性移除它们
如果不进行处理,垃圾收集器首先必须将它们移动到freachable队列,在那里后台线程将逐个调用它们的Finalize
方法。在那之后,垃圾收集器可以移除它们。虽然我同意你肯定应该这样做,但这真的回答了问题吗?@slaks,谢谢。处理连接是否也处理命令?MSDN示例通常缺少图形和DB对象中的处理/使用步骤。但是,命令和dbReader之间没有链接:dbReader是一个函数返回,它不保存对它的引用。当您使用SqlDataReader将关联的SqlConnection用于任何其他用途时,必须显式调用Close方法。谢谢+1。请看我的另一个问题:。我在日志文件中看到此错误。您认为未经处理的命令对象会导致此问题吗?
Public Sub ReadOrderData(ByVal connectionString As String)
Dim queryString As String = _
"SELECT OrderID, CustomerID FROM dbo.Orders;"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
Try
While reader.Read()
Console.WriteLine(String.Format("{0}, {1}", _
reader(0), reader(1)))
End While
Finally
' Always call Close when done reading.
reader.Close()
End Try
End Using
End Sub