Compartir a través de


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

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

Para actualizar el sistema de archivos 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 AcceptChangesDataSetobjeto , DataTableo DataRow hace que todos los valores originales de un DataRow objeto se sobrescriban con los valores actuales de .DataRow Si se han modificado los valores de campo que identifican la fila como única, 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.

    Al llamar al Update método , HostFileDataAdapter analiza 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 el conjunto de datos con datos, llame a HostFileDataAdapter.Fill en el DataSet objeto .

    El Update método resuelve los cambios de nuevo en el origen de datos; sin embargo, otros clientes pueden haber modificado los datos en el origen de datos desde la última vez que llenó 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);  
            }  
        }  

Consulte también

Uso del adaptador y el conjunto de datos de archivos host
Adaptador de BizTalk para la configuración de Host Files