データ アダプターを使用してホスト ファイル システムを更新する方法
HostFileDataAdapter.Update
は、オブジェクトからデータ ソースへの変更を DataSet
解決するために呼び出されます。 メソッドは Update
、 メソッドと同様に Fill
、 の DataSet
インスタンスを引数として受け取ります。
データ アダプターを使用してホスト ファイル システムを更新するには
更新する
DataSet
情報を含む オブジェクトを作成します。または、 の
DataSet.AcceptChanges
呼び出しで既存DataSet
のオブジェクトのデータを上書きすることもできます。、、または
DataRow
オブジェクトで をDataSet
呼び出すとAcceptChanges
、オブジェクトのすべての元の値DataRow
が の Current 値DataRow
で上書きされることに注意DataTable
してください。 行を一意として識別するフィールド値が変更された場合、 を呼び出AcceptChanges
した後、元の値はデータ ソースの値と一致しなくなります。さらに、パラメーターを使用
HostFileCommand
して、オブジェクト内の変更された行ごとに SQL ステートメントの入力値と出力値をDataSet
指定できます。を呼び出
HostFileDataAdapter.Update
し、更新する DataSet オブジェクトを指定します。メソッドを
Update
呼び出すと、 によってHostFileDataAdapter
行われた変更が分析され、適切なコマンドが実行されます。Update
を呼び出し、その更新に関連する適切なコマンドが存在しない場合 (たとえば、削除済みの行に関連するDeleteCommand
が存在しない場合) は、例外がスローされます。データを使用してデータセットを更新する場合は、オブジェクトで を
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);
}
}