Comment mettre à jour le système de fichiers hôte avec l’adaptateur de données
HostFileDataAdapter.Update
est appelé pour résoudre les modifications d’un DataSet
objet vers la source de données. La Update
méthode, comme la Fill
méthode, prend une instance d’un DataSet
comme argument.
Pour mettre à jour le système de fichiers hôte avec l’adaptateur de données
Créez un
DataSet
objet qui contient les informations que vous souhaitez mettre à jour.Vous pouvez également remplacer les données d’un objet existant
DataSet
par un appel àDataSet.AcceptChanges
.Notez que l’appel
AcceptChanges
de sur l’objetDataSet
,DataTable
ouDataRow
entraîne le remplacement de toutes les valeurs Original d’unDataRow
objet par les valeurs Actuelles de .DataRow
Si les valeurs de champ qui identifient la ligne comme unique ont été modifiées, après avoir appeléAcceptChanges
, les valeurs d’origine ne correspondent plus aux valeurs de la source de données.En outre, vous pouvez utiliser des
HostFileCommand
paramètres pour spécifier des valeurs d’entrée et de sortie pour une instruction SQL pour chaque ligne modifiée dans unDataSet
objet.Appelez
HostFileDataAdapter.Update
, avec l’objet DataSet que vous souhaitez mettre à jour.Lorsque vous appelez la
Update
méthode, leHostFileDataAdapter
analyse les modifications qui ont été apportées et exécute la commande appropriée. Si la méthodeUpdate
est appelée et si la commande appropriée n'existe pas pour une mise à jour particulière (par exemple, pas deDeleteCommand
pour les lignes supprimées), une exception est levée.Si vous souhaitez mettre à jour votre jeu de données avec des données, appelez
HostFileDataAdapter.Fill
sur votreDataSet
objet .La
Update
méthode résolve vos modifications dans la source de données. Toutefois, d’autres clients peuvent avoir modifié les données au niveau de la source de données depuis la dernière fois que vous avez rempli le DataSet. De nouvelles lignes sont ajoutées à la table et les informations mises à jour sont incorporées dans les lignes existantes.
Exemple
L’exemple de code suivant montre comment mettre à jour un jeu de données avec les Fill
commandes et Update
. Notez que les objets ETCMLogging et HostFileUtils fournissent respectivement des fonctionnalités de journalisation et d’utilitaire.
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);
}
}
Voir aussi
Utilisation de l’adaptateur et du jeu de données de fichiers d’hôte
Adaptateur BizTalk pour la configuration de fichiers d’hôte