Biegam trochę kłopotów na wkładaniu rzędu w stole z FirebirdClient.

To jest schemat tabeli

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

Potrzebuję tylko dwóch pierwszych kolumn, które mają być wypełnione.

To jest mój kod

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 Zawsze zwraca jeden wiersz, więc tabela powinna zostać zaktualizowana. Ale w moim przypadku nie jest.

Co ja robię źle?

0
TehXenoy 23 lipiec 2020, 10:51

1 odpowiedź

Najlepsza odpowiedź

Jeśli jawnie rozpoczniesz transakcję, musisz również go popełnić przed zamknięciem połączenia, w przeciwnym razie zostanie wyrzucony.

Albo usunąć największą transakcję, albo zatwierdzić, na przykład:

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 styczeń 2021, 12:03