When BatchExecution executing many sql command in 1 command without beginning transaction, there is error in this line: this.sqlTransaction.Commit(); // 242 line in FbBatchExecution.cs
This situation can be replaying to execute some query like this:
CREATE TABLE sample(id bigint not null);
COMMIT WORK;
and C# code like this:
FbConnection c = new FbConnection(@"Database=employee.fdb;User=SYSDBA;Password=masterkey");
c.Open();
FbBatchExecution fbe = new FbBatchExecution(c);
foreach (string cmd in script.Results) {
fbe.SqlStatements.Add(cmd);
}
fbe.Execute();
c.Close();
(copypasted from this:
http://web.firebirdsql.org/dotnetfirebird/blog/2005_03_01_archive.html )
So, small fix is this:
case SqlStatementType.Commit:
if (sqlTransaction!=null)
{
// raise the event
this.OnCommandExecuting(null);
this.sqlTransaction.Commit();
this.sqlTransaction = null;
// raise the event
this.OnCommandExecuted(sqlStatement, null, -1);
}
break;
case SqlStatementType.Rollback:
if (sqlTransaction != null)
{
// raise the event
this.OnCommandExecuting(null);
this.sqlTransaction.Rollback();
this.sqlTransaction = null;
// raise the event
this.OnCommandExecuted(sqlStatement, null, -1);
}
break;
but in my opinion this is looks like dirty hack...
(Sorry for my English )