我知道可能有一个明显的原因,但我无法找到它......
我通常在数据库连接和数据读取期间使用using
语句,但我无法在DataAdapter
上使用它,因为它没有实现IDisposable
。< / p>
另外:填充数据集后它的表现如何?
它是否关闭了连接?
只关闭它或处理它?
填充数据集后,我是否必须自行处理内部连接?如果是,为什么IDataAdapter
没有相关的属性/方法?
答案 0 :(得分:3)
DataAdapter
未关闭连接,因为您可能希望继续使用此连接填充其他DataSets
。
例外情况是在调用Fill
方法之前连接未处于打开状态时(Thanx Richard):https://stackoverflow.com/a/2472886/2258
答案 1 :(得分:3)
DataAdapter
实例不包含对非托管代码的引用。它只是作为命令和数据集之间的“桥梁”。
DataAdapter充当DataSet和数据源之间的桥梁 用于检索和保存数据。 DataAdapter提供了这个桥 通过映射Fill,它可以更改DataSet中的数据以匹配 数据源中的数据和更改中的数据 数据源以匹配DataSet中的数据。
来源:http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.aspx
答案 2 :(得分:2)
DataAdapter不实现IDisposable,因为它没有任何需要在正常垃圾收集之外处理的成员变量。换句话说,它不需要实现IDisposable。
如果您有兴趣,可以在此处查看Mono DataAdapter的源代码:http://www.java2v.com/Open-Source/CSharp/2.6.4-mono-.net-core/System.Data/System/Data/Common/DataAdapter.cs.htm
一般情况下,如果要在使用后关闭连接,请继续将连接放在使用范围内,但也可以使用单一连接并使用相同的连接在多个范围内使用多个DataAdapter。
希望这是有道理的。