Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
HostFileDataAdapter.Update est appelé pour résoudre les modifications d’un DataSet objet vers la source de données. La méthode Update, comme la méthode Fill, prend une instance de DataSet comme argument.
Pour mettre à jour le système de fichiers hôte avec l’adaptateur de données
Créez un
DataSetobjet qui contient les informations que vous souhaitez mettre à jour.Vous pouvez également remplacer les données d’un objet existant
DataSetavec un appel àDataSet.AcceptChanges.Notez que l'appel de
AcceptChangessur l'objetDataSet,DataTable, ouDataRowentraîne le remplacement de toutes les valeurs d'origine d'un objetDataRowpar les valeurs actuelles pour leDataRow. Si les valeurs de champ qui identifient la ligne comme étant uniques ont été modifiées, après l’appelAcceptChanges, les valeurs d’origine ne correspondent plus aux valeurs de la source de données.En outre, vous pouvez utiliser
HostFileCommanddes paramètres pour spécifier des valeurs d’entrée et de sortie pour une instruction SQL pour chaque ligne modifiée dans unDataSetobjet.Appelez
HostFileDataAdapter.Update, avec l’objet DataSet que vous souhaitez mettre à jour.Lorsque vous appelez la méthode
Update, celle-ci analyse les modifications qui ont été apportées et exécute la commande appropriée. Si la méthodeUpdateest appelée et si la commande appropriée n'existe pas pour une mise à jour particulière (par exemple, pas deDeleteCommandpour les lignes supprimées), une exception est levée.Si vous souhaitez mettre à jour votre jeu de données, appelez
HostFileDataAdapter.Fillsur votre objetDataSet.La méthode
Updaterésout vos modifications de la source de données; toutefois, d'autres clients peuvent avoir modifié des données à 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 commandes Fill 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 de fichier hôte et du jeu de données
Adaptateur BizTalk pour la configuration des fichiers hôtes