ホスト ファイル システムからスキーマ セットを取得する方法
HostFileConnection
が開いている場合は、 メソッドを使用してターゲット データに関するスキーマ情報をGetSchema
取得できます。 GetSchema
は、現在の DataTable
接続のターゲットのスキーマ情報を含む行と列が設定された オブジェクトを返します。
さらに、 が開いている間 DBDataReader
は、 メソッドを使用して現在の結果セットに関するスキーマ情報を GetSchemaTable
取得できます。 GetSchemaTable
は、現在の DataTable
結果セットのスキーマ情報を含む行と列が設定されたオブジェクトを返します。 オブジェクトには DataTable
、結果セットの列ごとに 1 つの行が含まれています。 スキーマ テーブル行の各列は、結果セットで返される列のプロパティにマップされます。ここで ColumnName
、 は プロパティの名前、列の値は プロパティの値です。
ホスト ファイル システムからスキーマ セットを取得するには
を呼び出してホスト ファイル システムへの
HostFileConnection
接続を開きます。を呼び出
HostfileConnection.GetSchema
してスキーマ データを取得します。
例
次のコード例では、接続オブジェクトからスキーマ セットを取得する方法を示します。 ETCMLogging オブジェクトと HostFileUtils オブジェクトは、ログ記録とユーティリティ機能を提供する開発者が作成したオブジェクトであることに注意してください。
public void CNGetSchema(ETCMLogging.Logging logging, string host, string ccsid, string cnstring, HostFileUtils.Utils.HostFileType hostfiletype)
{
HostFileUtils.Oledb oledb = new HostFileUtils.Oledb();
HostFileUtils.Utils u = new HostFileUtils.Utils();
logging.LogInfo(host);
try
{
// Create connection.
HostFileConnection cn = oledb.CreateConnection(logging);
cn.ConnectionString = cnstring;
DataTable dt = cn.GetSchema();
if (dt.HasErrors)
{
logging.LogFail("returned datatable has errors");
}
// Open the connection.
logging.LogInfo("Open Connection");
cn.Open();
DataTable dt2 = cn.GetSchema();
if (dt2.HasErrors)
{
logging.LogFail("returned datatable has errors");
}
int rowcnt = dt.Rows.Count;
for (int i = 0; i < rowcnt; i++)
{
int colcnt = dt.Rows[i].ItemArray.Length;
for (int o = 0; o < colcnt; o++)
{
u.CompareValues(dt.Rows[i][o].ToString(), dt2.Rows[i][o].ToString(), logging);
}
}
// Close the open connection.
cn.Close();
}
catch (Exception e)
{
logging.LogInfo(e.Message);
logging.LogFail(e.StackTrace);
}
}