с использованием using
совпадает с try/finally
блоком с dispose()
, вызываемым в finally
.
DbCommand
следует заключить в оператор using
, так как он реализует IDisposable
.
Обратите внимание, что DbCommand
на самом деле является абстрактным классом, поэтому вам потребуется либо
- происходит от него
- код для интерфейса (
IDbCommand
)
- использовать один из предопределенных производных классов, например
SqlCommand
.
DbConnection
также является абстрактным классом, поэтому вам нужно будет сделать нечто подобное, как я предлагал выше для DbCommand
, для этого тоже.
Общая рекомендация состоит в том, что если объект реализует IDisposable
, он должен быть заключен в оператор using
так, чтобы Dispose()
вызывался для свободных ресурсов, даже если исключение выдается внутри в блоке операторов. Тогда в вашем примере хорошей практикой было бы заключить в оболочку каждый из объектов подключения, команды, DataTable
и DbDataAdapter
в операторе using
.