データセットは、データ ソースに依存しない一貫したリレーショナル プログラミング モデルを提供する、データのメモリ常駐表現です。 データセットは、テーブル、制約、テーブル間のリレーションシップを含むデータの完全なセットを表します。 データセットはデータ ソースから独立しているため、データセットには、アプリケーションに対してローカルなデータと、複数のデータ ソースからのデータを含めることができます。 既存のデータ ソースとの対話は、 DataAdapter
オブジェクトを介して制御されます。
HostfileDataAdapter.SelectCommand
プロパティは、データ ソースからデータを取得するHostFileCommand
オブジェクトです。
HostFileDataAdapter.Fill
メソッドは、データセットにSelectCommand
の結果を設定するために使用されます。
Fill
は、その引数として、設定するDataSet
オブジェクト、DataTable
オブジェクト、またはSelectCommand
から返された行で埋めるDataTable
の名前を受け取ります。
Fill
メソッドは、HostFileDataReader
オブジェクトを暗黙的に使用して、DataSet
オブジェクトにテーブルを作成するために使用される列名と型、およびDataSet
オブジェクト内のテーブルの行を設定するデータを返します。 テーブルおよび列は、存在しない場合にのみ作成されます。それ以外の場合、 Fill
には、既存の DataSet
スキーマが使用されます。 主キーは、データ ソース内に存在し、 HostFileDataAdapter.MissingSchemaAction
が MissingSchemaAction.AddWithKey
に設定されていない限り作成されません。
Fill
がテーブルの主キーを検出した場合、DataSet
オブジェクト内のデータは、データソースから返された行の主キー列の値と一致する行のデータで上書きされます。 主キーが見つからない場合は、 DataSet
オブジェクトのテーブルにデータが追加されます。
Fill
では、 DataSet
オブジェクトにデータを設定するときに存在する可能性のあるマッピングが使用されます。
HostFileDataAdapter
が複数の結果セットを検出すると、DataSet
オブジェクトに複数のテーブルが作成されます。 テーブルには、Table0 の "Table" で始まる既定の増分名 TableN が指定されます。 テーブル名が Fill
メソッドに引数として渡された場合、テーブルには、TableName0 の "TableName" で始まる増分既定の名前 TableNameN が指定されます。
任意の数のHostFileDataAdapter
オブジェクトをDataSet
オブジェクトと一緒に使用できます。 各 DataAdapter
オブジェクトを使用して 1 つ以上の DataTable
オブジェクトを埋め、関連するデータ ソースへ更新を同期できます。
DataRelation
オブジェクトとConstraint
オブジェクトをDataSet
にローカルに追加して、異なるデータ ソースのデータを関連付けることができます。 1 つ以上の DataAdapter
オブジェクトを使用して、各データ ソースとの通信を行うことができます。
データ アダプターからホスト ファイル データセットを設定するには
HostFileConnection
を使用して、データ ソースへの新しい接続を作成します。HostFileConnection.Open
を使用して接続を開きます。HostFileCommand
で取得するデータを記述する SELECT コマンドを作成します。HostFileConnection
を使用して格納されたデータを操作するHostFileDataAdapter
を作成します。データをローカルに格納する
DataSet
オブジェクトを作成します。HostFileDataAdapter
を通じてデータを取得するために、DataSet
オブジェクトとFill
コマンドを使用します。
例
次のコード例は、HostFileDataAdapter
を使用してデータセットにデータを入力する方法を示しています。 この例では、ETCMLogging オブジェクトと HostFileUtils オブジェクトは、それぞれログ機能とユーティリティ機能を提供します。
public void HFDAdapterCommandConstructor(ETCMLogging.Logging logging, string host, string ccsid, string cnstring, HostFileUtils.Utils.HostFileType hostfiletype)
{
HostFileUtils.Utils u = new HostFileUtils.Utils();
logging.LogInfo(host + "::" + hostfiletype.ToString());
HostFileUtils.Utils.MytestsVals[] Datavals = u.InitMytestsVals();
try
{
HostFileConnection cn = new HostFileConnection(cnstring);
cn.Open();
String SELECT = u.CreateSQLCommand(host, hostfiletype, cnstring, "SELECT", "MYTEST");
HostFileCommand hfc = new HostFileCommand(SELECT, cn);
HostFileDataAdapter hfda = new HostFileDataAdapter(hfc);
DataSet ds = new DataSet();
hfda.Fill(ds);
int[] cp = u.CheckColumns(SELECT, cn, logging);
u.ValidateDataSet(ds, logging, Datavals, cp);
cn.Close();
}
catch (Exception e)
{
logging.LogInfo(e.Message);
logging.LogFail(e.StackTrace);
}
}
このコード例では、 HostFileUtils
オブジェクトと cnstring
パラメーターと ccsid
パラメーターを使用して、関連情報を含むテスト SQL コマンドをすばやく作成できます。