Share via


Come aggiornare il file system host con l'adattatore dati

HostFileDataAdapter.Update viene chiamato per risolvere le modifiche da un DataSet oggetto all'origine dati. Il Update metodo, come il Fill metodo , accetta un'istanza di come DataSet argomento.

Per aggiornare il file system host con l'adattatore dati

  1. Creare un DataSet oggetto contenente le informazioni da aggiornare.

    In alternativa, è possibile sovrascrivere i dati di un oggetto esistente DataSet con una chiamata a DataSet.AcceptChanges.

    Si noti che la chiamata AcceptChanges all'oggetto DataSet, DataTableo DataRow fa sì che tutti i valori Original per un DataRow oggetto vengano sovrascritti con i valori Current per .DataRow Se i valori dei campi che identificano la riga come univoca sono stati modificati, dopo aver chiamato AcceptChanges, i valori originali non corrispondono più ai valori nell'origine dati.

    Inoltre, è possibile usare HostFileCommand i parametri per specificare i valori di input e output per un'istruzione SQL per ogni riga modificata in un DataSet oggetto .

  2. Chiamare HostFileDataAdapter.Update, con l'oggetto DataSet da aggiornare.

    Quando si chiama il Update metodo , analizza HostFileDataAdapter le modifiche apportate ed esegue il comando appropriato. Se Update viene chiamato e non esiste il comando appropriato per un determinato aggiornamento, ad esempio nessun DeleteCommand per le righe cancellate, viene generata un'eccezione.

  3. Se si vuole aggiornare il set di dati con i dati, chiamare HostFileDataAdapter.Fill l'oggetto DataSet .

    Il Update metodo risolve le modifiche apportate all'origine dati. Tuttavia, altri client potrebbero aver modificato i dati nell'origine dati dopo l'ultima compilazione del DataSet. Le nuove righe vengono aggiunte alla tabella e le informazioni aggiornate vengono incorporate nelle righe esistenti.

Esempio

Nell'esempio di codice seguente viene illustrato come aggiornare un set di dati con i Fill comandi e Update . Si noti che gli oggetti ETCMLogging e HostFileUtils forniscono rispettivamente funzionalità di registrazione e utilità.

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

Vedere anche

Uso di HostFileAdapter e del set di dati
Adattatore BizTalk per la configurazione di file host