Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 处理命令/数据读取器对象_Vb.net - Fatal编程技术网

Vb.net 处理命令/数据读取器对象

Vb.net 处理命令/数据读取器对象,vb.net,Vb.net,请从以下网页查看以下代码: SQLCommand对象未包装在Using语句中。然而,这个问题中的代码(例如)是: 我看到很多代码都包含数据读取器和命令,这些代码没有包装在Using语句中。命令和数据读取器实现IDisposable。是否必须使用语句/call.dispose将它们包装起来 我的一个想法是,当数据读取器和命令链接到的连接被释放时,它们会隐式关闭。正确吗?您应该始终使用和语句 您将在internet上看到大量断开的代码。断开连接时,数据读取器和命令未关闭或断开。它们不可用,因为它们引

请从以下网页查看以下代码:

SQLCommand对象未包装在Using语句中。然而,这个问题中的代码(例如)是:

我看到很多代码都包含数据读取器和命令,这些代码没有包装在Using语句中。命令和数据读取器实现IDisposable。是否必须使用语句/call.dispose将它们包装起来


我的一个想法是,当数据读取器和命令链接到的连接被释放时,它们会隐式关闭。正确吗?

您应该始终使用
语句


您将在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