2

我曾经使用 try/catch/finally 块关闭打开的数据读取器:

 Dim dr As MySqlDataReader = Nothing
 Try
   dr = DBConnection.callReadingStoredProcedure("my_sp")

 Catch ex As Exception
   ' the caller will handle this
   Throw ex
 Finally
   If dr IsNot Nothing Then dr.Close()
 End Try

但我认为使用“使用”VB 关键字应该更干净(并且更快):

Using dr As MySqlDataReader = DBConnection.callReadingStoredProcedure("my_sp")

End Using
'   dr is surely disposed, but is it closed? 

IDispose 接口(Using 需要)是否在 DataReader 上执行关闭?

4

2 回答 2

7

该对象将被处置。是的,这会关闭 DataReader。

于 2010-08-27T17:07:45.267 回答
0

Reader 将被关闭,但这对于底层数据库连接不是必需的,因为它是由 ADO.NET 连接池管理的。检查此答案以获取更多信息:C# MySqlConnection won't close

于 2014-04-23T12:40:04.090 回答