处理连接,命令,适配器

时间:2015-03-04 15:07:37

标签: c# .net using oledbconnection disposing

当我从c#代码查询数据库时,我通常使用类似这样的结构:

using (var connection = new OleDbConnection(connStr))
using (var command = new OleDbCommand(query, connection))
using (var adapter = new OleDbDataAdapter(command))
{///}

我应该真正使用所有这些'使用'或者只处理连接就足够了,所有相关的对象也会被处理掉?

3 个答案:

答案 0 :(得分:3)

  

仅处理连接和所有相关对象就足够了   也将被处理?

没有。处置连接只会处理连接对象。

通常,安全地处理实现IDisposable的每个对象是安全的做法。 (还有一件事,处理Command对象将不会处理相关的连接对象)

答案 1 :(得分:3)

仅使用语句 部署包含的实例。它不会影响相关的其他对象。

你在案件中使用正确的方法。

using (var connection = new OleDbConnection(connStr))
using (var command = new OleDbCommand(query, connection))
using (var adapter = new OleDbDataAdapter(command))
{

} // <-- Both connection, command and adapter disposed here

答案 2 :(得分:0)

简短回答:不,这只会处理您的连接对象。因此,您需要所有这些using

长(呃)答案:在using语法后面,编译器创建一个范围,在该范围内创建变量(变量不存在于using范围之外)和{{退出Dispose范围时将调用方法。

因此,如果您未在using块中创建command变量,则不会调用using方法,因此不会丢弃该对象。 (除非您决定自己致电Dispose