3

おそらく明らかな理由があることは知っていますが、それを見つけることができません。

私は通常、usingDB接続とデータの読み取り中にステートメントを使用しますが、がDataAdapter実装されていないため、このステートメントを使用できませんIDisposable

また、データセットを入力した後、どのように動作しますか?

それ自体が接続を閉じますか?

それを閉じるか、それとも処分するだけですか?

データセットがいっぱいになった後、内部接続を自分で破棄する必要がありますか?もしそうなら、なぜIDataAdapter関連するプロパティ/メソッドがないのですか?

4

3 に答える 3

3

DataAdapterこの接続を使用して他のにデータを入力し続けることができるため、接続を閉じませんDataSets

例外は、Fillメソッドが呼び出される前に接続が開いた状態になかった場合です(Thanx Richard):https ://stackoverflow.com/a/2472886/2258

于 2012-11-29T15:52:46.573 に答える
3

インスタンスは、アンマネージコードへのDataAdapter参照を保持していません。これは、コマンドとデータセットの間の「ブリッジ」として機能するだけです。

DataAdapterは、データを取得および保存するためのDataSetとデータソース間のブリッジとして機能します。DataAdapterは、データセット内のデータをデータソース内のデータと一致するように変更するFillと、データソース内のデータをDataSet内のデータと一致するように変更するUpdateをマッピングすることにより、このブリッジを提供します。

ソース: http: //msdn.microsoft.com/en-us/library/system.data.common.dataadapter.aspx

于 2012-11-29T15:56:44.757 に答える
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

一般に、使用後に接続を閉じる場合は、接続をusingスコープに配置しますが、シングルトンを使用し、同じ接続を使用するmultipalスコープにmultipalDataAdaptersを配置することもできます。

これが理にかなっていることを願っています。

于 2012-11-29T16:02:55.253 に答える