Actualización del sistema de archivos del anfitrión con el adaptador de datos

HostFileDataAdapter.Update se llama para resolver los cambios de un objeto DataSet de nuevo al origen de los datos. El Update método, al igual que el Fill método , toma una instancia de DataSet como argumento .

Para actualizar el sistema de archivos del host con el adaptador de datos

  1. Cree un DataSet objeto que contenga la información que desea actualizar.

    O bien, puede sobrescribir los datos de un objeto existente DataSet con una llamada a DataSet.AcceptChanges.

    Tenga en cuenta que llamar al objeto AcceptChanges, DataSet, DataTable o DataRow hace que todos los valores originales de un objeto DataRow se sobrescriban con los valores actuales de DataRow. Si los valores de campo que identifican la fila como única se han modificado, después de llamar a AcceptChanges, los valores originales ya no coinciden con los valores del origen de datos.

    Además, puede usar HostFileCommand parámetros para especificar valores de entrada y salida para una instrucción SQL para cada fila modificada de un DataSet objeto .

  2. Llame a HostFileDataAdapter.Update, con el objeto DataSet que desea actualizar.

    Cuando se llama al Update método , analiza HostFileDataAdapter los cambios realizados y ejecuta el comando adecuado. Si se llama a Update y el comando correspondiente a una actualización determinada no existe (por ejemplo, no hay un comando DeleteCommand para las filas eliminadas), se inicia una excepción.

  3. Si desea actualizar su conjunto de datos con datos, llame a HostFileDataAdapter.Fill en su objeto DataSet.

    El Update método resuelve los cambios de nuevo en el origen de datos; sin embargo, es posible que otros clientes hayan modificado los datos en el origen de datos desde la última vez que haya rellenado el DataSet. Las nuevas filas se agregan a la tabla y la información actualizada se incorpora a las filas existentes.

Ejemplo

En el ejemplo de código siguiente se muestra cómo actualizar un conjunto de datos con los Fill comandos y Update . Tenga en cuenta que los objetos ETCMLogging y HostFileUtils proporcionan funcionalidad de registro y utilidad, respectivamente.

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

Véase también

Trabajar con el adaptador de archivos host y el conjunto de datos
Configuración del adaptador de BizTalk para archivos host