IBConnection := TIBConnection.Create(nil);
IBConnection.LoginPrompt := False;
IBConnection.DatabaseName := scFirebirdDBFile;
IBConnection.Dialect := 3;
IBConnection.CharSet := 'WIN1251';
// Default transaction for all internal IBConnection needs
Transaction_D := TSQLTransaction.Create(nil);
Transaction_D.DataBase := IBConnection;
Transaction_D.Params.Add('read_committed');
Transaction_D.Params.Add('rec_version');
Transaction_D.Params.Add('read');
IBConnection.Transaction := Transaction_D;
Transaction_R := TSQLTransaction.Create(nil);
Transaction_R.DataBase := IBConnection;
Transaction_R.Params.Add('read_committed');
Transaction_R.Params.Add('rec_version');
Transaction_R.Params.Add('read');
Transaction_W := TSQLTransaction.Create(nil);
Transaction_W.DataBase := IBConnection;
Transaction_W.Params.Add('read_committed');
Transaction_W.Params.Add('rec_version');
Transaction_W.Params.Add('nowait');
SQL_R := TSQLQuery.Create(nil);
SQL_R.DataBase := IBConnection;
SQL_R.Transaction := Transaction_R;
SQL_W := TSQLQuery.Create(nil);
SQL_W.DataBase := IBConnection;
SQL_W.Transaction := Transaction_W;
IBConnection.Open;
SQL_R.Close;
SQL_R.SQL.Clear;
SQL_R.SQL.Add('select * from Channels');
Transaction_R.StartTransaction;
try
SQL_R.Open;
Result := SQL_R.FieldByName('Name').AsString;
Transaction_R.Commit;
finally
if Transaction_R.Active then
Transaction_R.Rollback;
SQL_R.Close;
end;
SQL_W.Close;
SQL_W.SQL.Clear;
SQL_W.SQL.Add('select * from Channels');
Transaction_W.StartTransaction;
try
SQL_W.Open;
Result := SQL_W.FieldByName('Name').AsString;
Transaction_W.Commit;
finally
if Transaction_W.Active then
Transaction_W.Rollback;
SQL_W.Close;
end;