データセットは、データ ソースに依存しない一貫したリレーショナル プログラミング モデルを提供する、データのメモリ常駐表現です。 データセットは、テーブル、制約、テーブル間のリレーションシップを含むデータの完全なセットを表します。 データセットはデータ ソースから独立しているため、データセットには、アプリケーションに対してローカルなデータと、複数のデータ ソースからのデータを含めることができます。 既存のデータ ソースとの対話は、 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 コマンドをすばやく作成できます。