如何从数据适配器填充主机文件数据集
数据集是数据的内存驻留表示形式,提供独立于数据源的一致关系编程模型。 数据集表示一组完整的数据,包括表、约束和表之间的关系。 由于数据集独立于数据源,因此数据集可以包含应用程序本地的数据,以及来自多个数据源的数据。 与现有数据源的交互通过 DataAdapter
对象进行控制。
属性 HostfileDataAdapter.SelectCommand
是从 HostFileCommand
数据源检索数据的对象。 方法 HostFileDataAdapter.Fill
用于使用 的结果 SelectCommand
填充数据集。 Fill
采用要填充的 对象和 DataTable
对象或 要用 从 SelectCommand
返回的行填充的 DataTable
的名称作为其参数DataSet
。
方法 Fill
使用 HostFileDataReader
对象隐式返回用于在 对象中创建 DataSet
表的列名和类型,以及用于填充 对象中 DataSet
表行的数据。 表和列仅在不存在时才创建;否则, Fill
将使用现有的 DataSet
架构。 除非主键位于数据源中,并且 HostFileDataAdapter.MissingSchemaAction
设置为 MissingSchemaAction.AddWithKey
,否则不会创建主键。 如果 Fill
发现表存在主键,则它将用数据源中的数据覆盖对象中的数据 DataSet
,这些行的主键列值与从数据源返回的行的值匹配。 如果未找到主键,则数据将追加到 对象中的 DataSet
表。 Fill
使用填充 DataSet
对象时可能存在的任何映射。
HostFileDataAdapter
如果 遇到多个结果集,则会在 DataSet
对象中创建多个表。 这些表的命名方式为默认名称 Table 加上 N,N 从 0 开始递增,如以 Table0 为第一个表名,依次类推。 如果将表名作为参数传递给 Fill
方法,则会为表指定一个增量默认名称 TableNameN,从 TableName0 的“TableName”开始。
可以将任意数量的 HostFileDataAdapter
对象与 对象一 DataSet
起使用。 每个 DataAdapter
对象都可用于填充一个或多个 DataTable
对象,并将更新解析回相关数据源。 可以在本地将 和 Constraint
对象添加到 DataRelation
DataSet
,使你能够关联来自不同数据源的数据。 一个或多个 DataAdapter
对象可以处理与每个数据源的通信。
从数据适配器填充主机文件数据集
使用
HostFileConnection
创建与数据源的新连接。使用
HostFileConnection.Open
打开连接。创建一个 SELECT 命令,用于描述使用 检索
HostFileCommand
的数据。创建一个
HostFileDataAdapter
,使用HostFileConnection
与存储的数据进行交互。创建对象
DataSet
以在本地存储数据。使用
DataSet
对象和Fill
命令通过HostFileDataAdapter
检索数据。
示例
下面的代码示例演示如何通过 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 命令。