如何從資料配接器填入主機檔案資料集

資料集是記憶體常駐的資料表示,可提供與資料來源無關的一致性關聯式程式設計模型。 資料集代表一組完整的資料,包括資料表、條件約束和資料表之間的關聯性。 因為資料集與資料來源無關,所以資料集可以包含應用程式的本機資料,也可以包含來自多個資料來源的資料。 與現有資料來源的互動是透過物件來 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 建立多個資料表。 資料表會指定 TableN 的遞增預設名稱,從 "Table" 開始 (Table0)。 如果資料表名稱做為引數傳遞至 Fill 方法,則會為數據表指定增量預設名稱 TableNameN,其開頭為 "TableName" 代表 TableName0。

您可以搭配物件使用任何數目的 HostFileDataAdapter 物件 DataSet 。 每個 DataAdapter 物件都可以用來填滿一個或多個 DataTable 物件,並將更新解析回相關的資料來源。 您可以在本機加入 DataRelationConstraint 物件 DataSet ,讓您能夠將不同資料來源的資料相互關聯。 與每個資料來源的通訊可以由一個或多個 DataAdapter 物件處理。

從資料配接器填入主機檔案資料集

  1. 使用 HostFileConnection 建立新的資料來源連接。

  2. 使用 HostFileConnection.Open 開啟連接。

  3. 建立可描述要取出 HostFileCommand 之資料的 SELECT 命令。

  4. HostFileDataAdapter建立使用 HostFileConnection 來與儲存的資料互動。

  5. DataSet建立物件以將資料儲存在本機。

  6. 使用 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 物件和 cnstringccsid 參數可讓您快速建立含有相關資訊的測試 SQL 命令。

另請參閱

使用主機檔案配接器和資料集
主機檔案的 BizTalk 配接器設定