Share via


データ アダプターを使用してホスト ファイル システムを更新する方法

HostFileDataAdapter.Update は、オブジェクトからデータ ソースへの変更を DataSet 解決するために呼び出されます。 メソッドは Update 、 メソッドと同様に Fill 、 の DataSet インスタンスを引数として受け取ります。

データ アダプターを使用してホスト ファイル システムを更新するには

  1. 更新する DataSet 情報を含む オブジェクトを作成します。

    または、 のDataSet.AcceptChanges呼び出しで既存DataSetのオブジェクトのデータを上書きすることもできます。

    、、または DataRow オブジェクトで をDataSet呼び出すとAcceptChanges、オブジェクトのすべての元の値DataRowが の Current 値DataRowで上書きされることに注意DataTableしてください。 行を一意として識別するフィールド値が変更された場合、 を呼び出 AcceptChangesした後、元の値はデータ ソースの値と一致しなくなります。

    さらに、パラメーターを使用 HostFileCommand して、オブジェクト内の変更された行ごとに SQL ステートメントの入力値と出力値を DataSet 指定できます。

  2. を呼び出 HostFileDataAdapter.Updateし、更新する DataSet オブジェクトを指定します。

    メソッドを Update 呼び出すと、 によって HostFileDataAdapter 行われた変更が分析され、適切なコマンドが実行されます。 Update を呼び出し、その更新に関連する適切なコマンドが存在しない場合 (たとえば、削除済みの行に関連する DeleteCommand が存在しない場合) は、例外がスローされます。

  3. データを使用してデータセットを更新する場合は、オブジェクトで をDataSet呼び出HostFileDataAdapter.Fillします。

    メソッドは Update 変更をデータ ソースに解決しますが、他のクライアントは、DataSet を最後に入力してからデータ ソースのデータを変更している可能性があります。 テーブルに新しい行が追加され、更新された情報が既存の行に組み込まれます。

次のコード例では、 コマンドと Update コマンドを使用してデータセットを更新する方法をFill示します。 ETCMLogging オブジェクトと HostFileUtils オブジェクトは、それぞれログ記録機能とユーティリティ機能を提供します。

public void BVTHFDataAdapterInsert(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.BvttestsVals[] Datavals = u.InitBvttestsVals();  
  
            try  
            {  
                HostFileConnection cn = new HostFileConnection(cnstring);  
                cn.Open();  
                String SELECT = u.CreateSQLCommand(host, hostfiletype, cnstring, "SELECT", "BVTTESTS");  
                HostFileDataAdapter hfda = new HostFileDataAdapter(SELECT, cn);  
                DataSet ds = new DataSet();                DataSet dsold = new DataSet();                hfda.Fill(ds);                hfda.Fill(dsold);  
                int[] cp = u.CheckColumns(SELECT, cn, logging);  
                u.ValidateDataSet(ds, logging, Datavals, cp);  
                object[] newrow = new object[5];  
                // ('REC129-1','REC129-2',129,1290,'129.645')  
                newrow[cp[0]] = "REC129-1";  
                newrow[cp[1]] = "REC129-2";  
                newrow[cp[2]] = 129;  
                newrow[cp[3]] = 1290;  
                newrow[cp[4]] = 129.645M;  
                ds.Tables[0].Rows.Add(newrow);                  
                int z = hfda.Update(ds);  
                if (z != 1)  
                {  
                    logging.LogFail("a unexpected number of updates::"+z.ToString());  
                }  
                DataSet ds1 = new DataSet();  
                hfda.Fill(ds1);  
                int j = 0;  
                int i = 0;  
                foreach (DataRow row in ds1.Tables[0].Rows)  
                {  
                    string rec = (string)ds1.Tables[0].Rows[j][cp[0]];  
                    if (!rec.Equals("REC129-1"))  
                    {  
                        u.CompareValues((string)ds1.Tables[0].Rows[j][cp[0]], Datavals[i].OUT1_CHAR1, logging);  
                        u.CompareValues((string)ds1.Tables[0].Rows[j][cp[1]], Datavals[i].OUT1_CHAR2, logging);  
                        u.CompareValues((short)ds1.Tables[0].Rows[j][cp[2]], Datavals[i].OUT1_SMALLINT, logging);  
                        u.CompareValues((int)ds1.Tables[0].Rows[j][cp[3]], Datavals[i].OUT1_INTEGER, logging);  
                        u.CompareValues((decimal)ds1.Tables[0].Rows[j][cp[4]], Datavals[i].OUT1_DECIMAL, logging);  
                        j++;  
                        i++;  
                    }  
                    else  
                    {  
                        u.CompareValues((string)ds1.Tables[0].Rows[j][cp[0]], "REC129-1", logging);  
                        u.CompareValues((string)ds1.Tables[0].Rows[j][cp[1]], "REC129-2", logging);  
                        u.CompareValues((short)ds1.Tables[0].Rows[j][cp[2]], 129, logging);  
                        u.CompareValues((int)ds1.Tables[0].Rows[j][cp[3]], 1290, logging);  
                        u.CompareValues((decimal)ds1.Tables[0].Rows[j][cp[4]], 129.645M, logging);  
                        j++;  
                    }  
                }  
                if (j == 0)  
                {  
                    logging.LogFail("No Rows on DataTable!");  
                }  
                z = 0;  
                z = hfda.Update(dsold);  
                if (z != 1)  
                {  
                    logging.LogFail("a unexpected number of updates::" + z.ToString());  
                }  
                DataSet ds2 = new DataSet();  
                hfda.Fill(ds2);  
                u.ValidateDataSet(ds2, logging, Datavals, cp);  
  
                cn.Close();  
            }  
            catch (Exception e)  
            {  
                logging.LogInfo(e.Message);  
                logging.LogFail(e.StackTrace);  
            }  
        }  

参照

ホスト ファイル アダプターとデータセットの操作
ホスト ファイルの BizTalk Adapter の構成