12

データベースからのデータ (厳密に型指定されているかどうかに関係なく) を操作するときは常に Get を使用しているようですが、実際に Fill を使用する必要はありませんでしたが、データを引き出して更新するときに get の代わりに Fill を使用することも簡単にできました。

各方法の意味と落とし穴に関するガイダンスを提供できる人はいますか?

どちらか一方を使用するのが望ましいのはどのような状況ですか?

パフォーマンスへの影響はありますか?

答えてくれてありがとう!このコミュニティが大好きです!

4

4 に答える 4

4

Fill を使用すると、メソッドに渡された DataTable に詳細を問い合わせることができるため、例外のデバッグに最適です。Get は同じ状況では戻りません。

チップ:

  • DataTable.GetErrors() は、エラーになっている DataRow インスタンスの配列を返します
  • DataRow.RowError には、行エラーの説明が含まれています
  • DataRow.GetColumnsInError() は、エラーのある DataColumn インスタンスの配列を返します
于 2009-02-12T20:48:15.220 に答える
3
  • 単一の DataTable のみが必要な場合に取得します。
  • 追加の DataTable を単一の DataSet に追加する場合に入力します。
于 2008-10-05T19:51:43.583 に答える
3

テーブルに既にデータが含まれている場合、Fill の特定の落とし穴は、たとえば、主キーが既にテーブルにある行をクエリが返したときに、一意のインデックス例外が発生する可能性があることです。

編集コントロールまたはフォームのグリッドがテーブルにバインドされ、Fill を使用してデータベースからテーブルにさらに行をロードする、多くのデータ バインドされた Windows フォーム コードを使用してきました。これにより、いくつかの興味深いイベント起動シーケンスと経験からの断続的なエラーが発生する可能性があります。

Get を使用して新しい結果を含む新しいテーブルを取得し、フォームを新しいテーブルに再バインドすると、このような状況を回避できます。

既存の行を持つテーブルで Fill を使用しない限り、2 つのパフォーマンスに大きな違いがあるとは思えません。この場合、テーブルの BeginLoadData メソッドは無視されます。これにより、通常はイベントの発生とインデックスの再構築が最後まで遅れます。

于 2008-10-14T11:43:36.423 に答える
1

唯一の違いは、GetData がテーブルをインスタンス化し、Fill が既存のテーブルを埋めることです。

DataTable をインスタンス化する必要があるかどうかによって異なります。既にインスタンス化した DataSet の特定のテーブル メンバーを埋めるときに、Fill をよく使用します。

于 2008-10-05T18:53:04.373 に答える