如何从数据适配器填充主机文件数据集

数据集是数据的内存驻留表示形式,提供与数据源无关的一致关系编程模型。 数据集表示一组完整的数据,包括表、约束和表之间的关系。 由于数据集独立于数据源,因此数据集可以包含应用程序的本地数据,以及来自多个数据源的数据。 与现有数据源的交互通过DataAdapter对象进行控制。

HostfileDataAdapter.SelectCommand 属性是一个 HostFileCommand 从数据源检索数据的对象。 HostFileDataAdapter.Fill 方法用于将 SelectCommand 的结果填充到数据集中。 Fill的参数包括一个要填充的DataSet对象,以及一个DataTable对象或要填充的DataTable名称,填充内容为从SelectCommand返回的行。

该方法 Fill 隐式使用 HostFileDataReader 对象返回用于在对象中创建表的 DataSet 列名和类型,以及用于填充对象中 DataSet 表行的数据。 表和列仅在不存在时才创建;否则, Fill 将使用现有的 DataSet 架构。 除非主键位于数据源中,否则不会创建主键,并且 HostFileDataAdapter.MissingSchemaAction 设置为 MissingSchemaAction.AddWithKey。 如果 Fill 发现表格中存在主键,那么对于主键列值与数据源返回的行相匹配的行,它会使用数据源中的数据覆盖 DataSet 对象中的数据。 如果未找到主键,则数据将追加到对象中的 DataSet 表。 Fill 在填充 DataSet 对象时会使用可能存在的任何映射。

HostFileDataAdapter如果遇到多个结果集,它会在DataSet对象中创建多个表。 表的增量默认名称为 TableN,从 Table0 的“Table”开始。 如果将表名作为参数 Fill 传递给该方法,则表将给定 TableNameN 的增量默认名称,以 TableName0 的“TableName”开头。

可以将任意数量的 HostFileDataAdapter 对象与 DataSet 对象一起使用。 每个 DataAdapter 对象都可用于填充一个或多个 DataTable 对象,并将更新解析回相关数据源。 可以向DataSet本地添加DataRelationConstraint对象,使你能够关联不同数据源中的数据。 一个或多个 DataAdapter 对象可以处理与每个数据源的通信。

将数据适配器中的数据填充至主机文件数据集中

  1. 使用 HostFileConnection 创建新的数据源连接。

  2. 使用 HostFileConnection.Open 打开连接。

  3. 创建一个用于描述要检索数据的 SELECT 命令HostFileCommand

  4. 创建一个 HostFileDataAdapter 使用 HostFileConnection 与存储的数据交互。

  5. 创建一个 DataSet 对象以在本地存储数据。

  6. 使用HostFileDataAdapterDataSet对象和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 命令。

另请参阅

使用主机文件适配器和数据集
用于主机文件的 BizTalk 适配器配置