es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardar objeto DataTable de C# en una base de datos MS-Access con la instrucción SQL de actualización – Command

Guardo los cambios de mi objeto Datatable DT1 en mi base de datos de Access, como se puede ver en el siguiente código. Mi problema es que siempre tengo que ejecutar el último comando ejecutado una segunda vez. De alguna manera, no se ejecuta correctamente cuando se ejecuta una vez. Ahora he solucionado el problema de esta manera, pero me gustaría entender por qué sucede eso. ¿Alguien tiene alguna idea?

Saludos cordiales

foreach (DataRow DR1 in DT1.Rows)
{
    if (DR1.RowState == DataRowState.Modified | DR1.RowState == DataRowState.Added | DR1.RowState == DataRowState.Deleted) 
    {
        DA1.UpdateCommand = new OleDbCommand("UPDATE Table1 SET Column1 = @Column1, Column2 = @Column2 WHERE ID = @ID", Connection);

        DA1.UpdateCommand.Parameters.Add("@Column1", OleDbType.VarChar).Value = DR1["Column1"];
        DA1.UpdateCommand.Parameters.Add("@Column2", OleDbType.VarChar).Value = DR1["Column2"]; 
        DA1.UpdateCommand.Parameters.Add("@ID", OleDbType.VarChar).Value = DR1["ID"];

        DA1.UpdateCommand.ExecuteNonQuery();
    }
    DA1.UpdateCommand.ExecuteNonQuery(); // Sin esto, el último comando no se ejecutará
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema en el código es que el último DA1.UpdateCommand.ExecuteNonQuery() se está ejecutando fuera del bucle. Esto significa que la última fila que fue procesada en el bucle no se actualizará en la base de datos. Al ejecutar el comando de actualización nuevamente después del bucle, la última fila se actualiza correctamente.

    Sin embargo, la causa raíz del problema podría estar relacionada con la conexión que se cierra prematuramente u otros factores relacionados con la base de datos específica que se está utilizando. Es importante investigar más a fondo para comprender completamente la causa del problema.

Comments are closed.