다음을 통해 공유


데이터 어댑터로 호스트 파일 시스템을 업데이트하는 방법

HostFileDataAdapter.Update 객체에서 DataSet 객체의 변경 사항을 데이터 소스로 다시 해결하기 위해 호출됩니다. Update 메서드는 Fill 메서드처럼 인스턴스인 DataSet를 인수로 받습니다.

데이터 어댑터를 사용하여 호스트 파일 시스템을 업데이트하려면

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

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

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

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

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

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

  3. 데이터를 사용하여 데이터 세트를 업데이트하려면 DataSet 객체에서 HostFileDataAdapter.Fill를 호출하십시오.

    이 메서드는 Update 변경 내용을 데이터 원본으로 다시 해결합니다. 그러나 다른 클라이언트는 DataSet을 마지막으로 채운 이후 데이터 원본에서 데이터를 수정했을 수 있습니다. 새 행이 테이블에 추가되고 업데이트된 정보가 기존 행에 통합됩니다.

예시

다음 코드 예제에서는 FillUpdate 명령을 사용하여 데이터 세트를 업데이트하는 방법을 보여 줍니다. 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 어댑터 구성