1

.xsd を作成したとき、テーブルごとに列を選択する必要があり、テーブルのスキーマが作成されましたよね? では、その Select 文字列を取得して、データアダプタの新しいインスタンスの基本 Select コマンドとして使用し、必要に応じて Where 句と OrderBy 句を追加するにはどうすればよいでしょうか?

これにより、(同じテーブルの) 各 DataAdapter のフィールド リストを .xsd ファイル内のそのテーブルのスキーマと同期させる必要がなくなります。

特定のテーブル スキーマで動作する複数の DataAdapter があり、Where 句と OrderBy 句のパラメーターが異なることはよくあることではありませんか? 確かに、すべて同じテーブル スキーマで動作する半ダースの DataAdapter の Select 文字列のフィールド リスト部分を維持する (または冗長に構築する) 必要はありません。

私はこの擬似コードのようなものを想定しています:

BaseSelectString = MyTypedDataSet.JobsTable.GetSelectStringFromSchema()  // Is there such a method or technique?

WhereClause = " Where SomeField = @Param1 and SomeOtherField = @Param2"
OrderByClause = " Order By Field1, Field2"

SelectString=BaseSelectString + WhereClause + OrderByClause

OleDbDataAdapter adapter = new OleDbDataAdapter(SelectString, MyConn)
4

1 に答える 1

2

各テーブルにはデフォルトのクエリがあります (一番上にチェックが付いているもの)。テーブルをデータセットにドラッグしてクエリを作成すると、テーブルのスキーマ化に使用する SQL ステートメントが作成されます。そのクエリは単純にしてください。実際にはコードで使用しない可能性があります。そのクエリをいつでも編集して、テーブル スキーマを更新できます。

デフォルトのクエリを開くたびに、データソースに接続され、以前には存在しなかった新しい列を選択できるようになります。既存の列を更新する場合は、クエリを開く前にテーブルからすべての列を削除してください。クエリを保存すると、更新された列が追加されます。

接続文字列に列情報を表示する権限があることを確認してください。

複数のクエリを 1 つの TableAdapter に追加できます。デザイナーの TableAdapters は、上部にテーブル スキーマ、下部にクエリでセクション化されて表示されます。デフォルトのクエリは、他のクエリからの出力に使用できる列を制御します。追加のクエリを追加するには、TableAdapter を右クリックして [追加] -> [クエリ] を選択するか、TableAdapter の下部を選択している場合は [クエリの追加...] を選択します。作成する新しい SQL クエリは、デフォルト クエリの SQL から開始されます。新しいクエリごとに、デフォルト クエリの「Fill」または「GetData」メソッドの代わりに使用できるメソッド名を付けます。それぞれの新しいクエリは、異なる "where" 句のパラメーターを持つことができる場合でも、既定のクエリと一致する結果セットを持つことが想定されています。

要するに

  • 複数のクエリを追加するだけで、テーブルごとに 1 つの TableAdapter を持つことができます。
  • 追加の各クエリは、すべて同じ列を返す限り、異なる "Where" 句パラメーターを持つことができます。
于 2010-05-08T18:35:33.633 に答える