Freigeben über


So aktualisieren Sie das Hostdateisystem mit dem Datenadapter

HostFileDataAdapter.Update wird aufgerufen, um Änderungen von einem DataSet Objekt zurück zur Datenquelle aufzulösen. Die Update Methode nimmt, wie die Fill Methode, eine Instanz eines DataSet als Argument entgegen.

So aktualisieren Sie das Hostdateisystem mit dem Datenadapter

  1. Erstellen Sie ein DataSet Objekt, das die Zu aktualisierenden Informationen enthält.

    Alternativ können Sie die Daten eines vorhandenen DataSet Objekts mit einem Aufruf DataSet.AcceptChangesüberschreiben.

    Beachten Sie, dass das Aufrufen von AcceptChanges beim DataSet, DataTable oder DataRow-Objekt alle Originalwerte für ein DataRow-Objekt mit den Aktuellen Werten für das DataRow überschreibt. Wenn die Feldwerte, die die Zeile als eindeutig kennzeichnen, geändert wurden, dann stimmen nach dem Aufruf von AcceptChanges die Originalwerte nicht mehr mit den Werten in der Datenquelle überein.

    Darüber hinaus können Sie Parameter verwenden HostFileCommand , um Eingabe- und Ausgabewerte für eine SQL-Anweisung für jede geänderte Zeile in einem DataSet Objekt anzugeben.

  2. Rufen Sie HostFileDataAdapter.Update das DataSet-Objekt auf, das Sie aktualisieren möchten.

    Wenn Sie die Update Methode aufrufen, analysiert HostFileDataAdapter die vorgenommenen Änderungen und führt den passenden Befehl aus. Wenn Update aufgerufen wird und der entsprechende Befehl für ein bestimmtes Update nicht vorhanden ist (wenn z. B. DeleteCommand für gelöschte Zeilen fehlt), wird eine Ausnahme ausgelöst.

  3. Wenn Sie Ihr Dataset mit Daten aktualisieren möchten, rufen Sie das DataSet Objekt mit HostFileDataAdapter.Fill auf.

    Die Update Methode löst Ihre Änderungen wieder in der Datenquelle auf. Andere Clients haben jedoch möglicherweise Daten an der Datenquelle seit dem letzten Ausfüllen des DataSets geändert. Neue Zeilen werden der Tabelle hinzugefügt, und aktualisierte Informationen werden in vorhandene Zeilen integriert.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie ein Dataset mit den Fill Und-Befehlen Update aktualisiert wird. Beachten Sie, dass die ETCMLogging- und HostFileUtils-Objekte Protokollierungs- bzw. Hilfsfunktionen bereitstellen.

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);  
            }  
        }  

Siehe auch

Arbeiten mit dem Hostdateiadapter und -Dataset
BizTalk-Adapter für die Konfiguration von Hostdateien