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

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

    Notez que l’appel AcceptChanges de sur l’objet DataSet, DataTableou DataRow entraîne le remplacement de toutes les valeurs Original d’un DataRow 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 un DataSet objet.

  2. Appelez HostFileDataAdapter.Update, avec l’objet DataSet que vous souhaitez mettre à jour.

    Lorsque vous appelez la Update méthode, le HostFileDataAdapter 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 avec des données, appelez HostFileDataAdapter.Fill sur votre DataSet 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