Mise à jour du 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 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

  1. 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 avec un appel à DataSet.AcceptChanges.

    Notez que l'appel de AcceptChanges sur l'objet DataSet, DataTable, ou DataRow entraîne le remplacement de toutes les valeurs d'origine d'un objet DataRow par les valeurs actuelles pour le DataRow. Si les valeurs de champ qui identifient la ligne comme étant uniques ont été modifiées, après l’appel AcceptChanges, les valeurs d’origine ne correspondent plus aux valeurs de la source de données.

    En outre, vous pouvez utiliser HostFileCommand des paramètres pour spécifier des valeurs d’entrée et de sortie pour une instruction SQL pour chaque ligne modifiée dans un DataSet objet.

  2. 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éthode Update est appelée et si la commande appropriée n'existe pas pour une mise à jour particulière (par exemple, pas de DeleteCommand pour les lignes supprimées), une exception est levée.

  3. Si vous souhaitez mettre à jour votre jeu de données, appelez HostFileDataAdapter.Fill sur votre objet DataSet.

    La méthode Update ré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