다음을 통해 공유


데이터 어댑터를 사용하여 호스트 파일 시스템을 업데이트하는 방법

HostFileDataAdapter.Update는 개체의 변경 내용을 다시 데이터 원본으로 DataSet resolve 위해 호출됩니다. 메서드와 마찬가지로 Fill 메서드는 UpdateDataSet instance 인수로 사용합니다.

데이터 어댑터로 호스트 파일 시스템을 업데이트하려면

  1. DataSet 업데이트하려는 정보가 포함된 개체를 만듭니다.

    또는 를 호출DataSet.AcceptChanges하여 기존 DataSet 개체의 데이터를 덮어쓸 수 있습니다.

    , DataTable또는 개체에서 를 호출 AcceptChanges 하면 개체의 DataRowDataSet모든 Original 값을 의 Current 값DataRow으로 덮어씁 DataRow 니다. 행을 고유으로 식별하는 필드 값이 수정된 경우 를 호출 AcceptChanges한 후 원본 값이 더 이상 데이터 원본의 값과 일치하지 않습니다.

    또한 매개 변수를 사용하여 HostFileCommand 개체의 수정된 각 행 DataSet 에 대해 SQL 문의 입력 및 출력 값을 지정할 수 있습니다.

  2. 업데이트하려는 DataSet 개체를 사용하여 를 호출 HostFileDataAdapter.Update합니다.

    메서드를 Update 호출할 때 는 HostFileDataAdapter 변경된 내용을 분석하고 적절한 명령을 실행합니다. Update를 호출했는데 삭제된 행에 대한 DeleteCommand가 없는 경우와 같이 특정 업데이트에 사용할 적절한 명령이 없으면 예외가 throw됩니다.

  3. 데이터 세트를 데이터로 업데이트하려면 개체에서 를 호출 HostFileDataAdapter.Fill 합니다 DataSet .

    메서드는 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 어댑터 구성