Me encuentro con algunos problemas al insertar una fila dentro de una tabla con FirebirdClient.

Este es el esquema de la tabla

FILA     INTEGER Nullable
NUMERO   INTEGER Nullable
STATO    VARCHAR(1) Nullable
UTENTE   VARCHAR(10) Nullable
WEBSYNC  VARCHAR(1) Nullable

Solo necesito llenar las dos primeras columnas.

Este es mi código

connection.Open();

FbTransaction transaction = connection.BeginTransaction();

FbCommand command = new FbCommand("INSERT INTO TABIMPEG (FILA, NUMERO) VALUES(@row, @number)", connection, transaction);
command.Parameters.Add("@row", row);
command.Parameters.Add("@number", number);

int ok = command.ExecuteNonQuery();
connection.Close();

if (ok != 0) 
    return true;

return false;

Command.ExecuteNonQuery siempre devuelve una fila, por lo que la tabla debe actualizarse. Pero no lo es, en mi caso.

¿Qué estoy haciendo mal?

0
TehXenoy 23 jul. 2020 a las 10:51

1 respuesta

La mejor respuesta

Si inicia explícitamente una transacción, también debe confirmarla antes de cerrar la conexión; de lo contrario, se revertirá.

Elimine la transacción explícita o consúltela, por ejemplo:

int ok;
using(FbTransaction transaction = connection.BeginTransaction())
{
    FbCommand command = new FbCommand("INSERT INTO TABIMPEG (FILA, NUMERO) VALUES(@row, @number)", connection, transaction);
    command.Parameters.Add("@row", row);
    command.Parameters.Add("@number", number);

    ok = command.ExecuteNonQuery();
    transaction.Commit();
}
// ... rest of your code
0
Mark Rotteveel 1 ene. 2021 a las 12:03