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
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 aDataSet.AcceptChanges
.Tenga en cuenta que llamar al
AcceptChanges
DataSet
objeto ,DataTable
oDataRow
hace que todos los valores originales de unDataRow
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 aAcceptChanges
, 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 unDataSet
objeto .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 aUpdate
y el comando correspondiente a una actualización determinada no existe (por ejemplo, no hay un comandoDeleteCommand
para las filas eliminadas), se inicia una excepción.Si desea actualizar el conjunto de datos con datos, llame a
HostFileDataAdapter.Fill
en elDataSet
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