C# FirebirdClient:无法执行 INSERT 语句

C# FirebirdClient: Can't execute INSERT statement

我 运行 在使用 FirebirdClient 在 table 中插入一行时遇到了一些麻烦。

这是 table 架构

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

我只需要填写前两列。

这是我的代码

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 总是 returns 一行,所以应该更新 table。但它不是,就我而言。

我做错了什么?

如果你显式启动了一个事务,那么你也需要在关闭连接之前提交它,否则它会被回滚。

要么删除显式事务,要么提交它,例如:

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