.NET MySql does “Using” closes the datareader?
-
01-10-2019 - |
Pergunta
I used to close an open datareader using the try/catch/finally block:
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
But I think it should be cleaner (and somewhat faster) to use the "Using" VB keyword:
Using dr As MySqlDataReader = DBConnection.callReadingStoredProcedure("my_sp")
End Using
' dr is surely disposed, but is it closed?
Does the IDispose interface (required by Using) perform a Close on the DataReader?
Solução
The object will be disposed. Yes, this closes the DataReader.
Outras dicas
Reader will be closed, but this is not necessary for underlaying database connection because it is managed with ADO.NET connection pool. Check this answer for more information: C# MySqlConnection won't close
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow