데이터 어댑터를 사용하여 호스트 파일 시스템을 업데이트하는 방법
HostFileDataAdapter.Update
는 개체의 변경 내용을 다시 데이터 원본으로 DataSet
resolve 위해 호출됩니다. 메서드와 마찬가지로 Fill
메서드는 Update
의 DataSet
instance 인수로 사용합니다.
데이터 어댑터로 호스트 파일 시스템을 업데이트하려면
DataSet
업데이트하려는 정보가 포함된 개체를 만듭니다.또는 를 호출
DataSet.AcceptChanges
하여 기존DataSet
개체의 데이터를 덮어쓸 수 있습니다.,
DataTable
또는 개체에서 를 호출AcceptChanges
하면 개체의DataRow
DataSet
모든 Original 값을 의 Current 값DataRow
으로 덮어씁DataRow
니다. 행을 고유으로 식별하는 필드 값이 수정된 경우 를 호출AcceptChanges
한 후 원본 값이 더 이상 데이터 원본의 값과 일치하지 않습니다.또한 매개 변수를 사용하여
HostFileCommand
개체의 수정된 각 행DataSet
에 대해 SQL 문의 입력 및 출력 값을 지정할 수 있습니다.업데이트하려는 DataSet 개체를 사용하여 를 호출
HostFileDataAdapter.Update
합니다.메서드를
Update
호출할 때 는HostFileDataAdapter
변경된 내용을 분석하고 적절한 명령을 실행합니다.Update
를 호출했는데 삭제된 행에 대한DeleteCommand
가 없는 경우와 같이 특정 업데이트에 사용할 적절한 명령이 없으면 예외가 throw됩니다.데이터 세트를 데이터로 업데이트하려면 개체에서 를 호출
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);
}
}