当我从c#代码查询数据库时,我通常使用类似这样的结构:
using (var connection = new OleDbConnection(connStr))
using (var command = new OleDbCommand(query, connection))
using (var adapter = new OleDbDataAdapter(command))
{///}
我应该真正使用所有这些'使用'或者只处理连接就足够了,所有相关的对象也会被处理掉?
答案 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
)