/// <summary>Executes a query that returns no results</summary> /// <param name="query">SQL query to execute</param> public void ExecuteNonQuery(string query) { if (!IsOpen) { fbDBConnection.Open(); } if (IsOpen) { var transactionOptions = new FbTransactionOptions() { TransactionBehavior = FbTransactionBehavior.Concurrency | FbTransactionBehavior.Wait | FbTransactionBehavior.NoAutoUndo }; FbTransaction transaction = fbDBConnection.BeginTransaction(transactionOptions); query = AdjustQuotedFields(query); FbCommand myCmd = new FbCommand(query, fbDBConnection, transaction); myCmd.CommandType = CommandType.Text; try { myCmd.ExecuteNonQuery(); transaction.Commit(); } catch (Exception ex) { transaction.Dispose(); // this.CloseDatabase(); throw new FirebirdException("Cannot execute the SQL statement\r\n " + query + "\r\n" + ex.Message); } finally { if (myCmd != null) { // transaction.Dispose(); myCmd.Dispose(); myCmd = null; } } } else { throw new FirebirdException("Firebird database is not open."); } }
public FbTransaction BeginTransaction(FbTransactionOptions options, string transactionName) { EnsureActiveTransaction(); try { _activeTransaction = new FbTransaction(_owningConnection, IsolationLevel.Unspecified); _activeTransaction.BeginTransaction(options); if (transactionName != null) { _activeTransaction.Save(transactionName); } } catch (IscException ex) { DisposeTransaction(); throw FbException.Create(ex); } return(_activeTransaction); }
public async Task <FbTransaction> BeginTransactionAsync(FbTransactionOptions options, string transactionName, CancellationToken cancellationToken = default) { EnsureActiveTransaction(); try { _activeTransaction = new FbTransaction(_owningConnection, IsolationLevel.Unspecified); await _activeTransaction.BeginTransactionAsync(options, cancellationToken).ConfigureAwait(false); if (transactionName != null) { _activeTransaction.Save(transactionName); } } catch (IscException ex) { await DisposeTransactionAsync(cancellationToken).ConfigureAwait(false); throw FbException.Create(ex); } return(_activeTransaction); }
private static FbTransactionOptions CreateTransactionOptions(IsolationLevel isolationLevel) { var transactionOptions = new FbTransactionOptions { WaitTimeout = TimeSpan.FromSeconds(10) }; switch (SqlHelper.ReduceIsolationLevel(isolationLevel)) { case IsolationLevel.ReadCommitted: transactionOptions.TransactionBehavior = FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.NoRecVersion | FbTransactionBehavior.Write | FbTransactionBehavior.NoWait; break; case IsolationLevel.Serializable: transactionOptions.TransactionBehavior = FbTransactionBehavior.Concurrency | FbTransactionBehavior.Write | FbTransactionBehavior.Wait; break; } return(transactionOptions); }
private FbTransaction GetTransaction(bool readable = true) { if (readable) { if (write_transaction != null) { // if(conn.) write_transaction.RollbackRetaining(); write_transaction.Dispose(); } var tro = new FbTransactionOptions() { TransactionBehavior = FbTransactionBehavior.Read | FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion }; read_transaction = conn.BeginTransaction(tro); return(read_transaction); } else { if (read_transaction != null) { read_transaction.CommitRetaining(); read_transaction.Dispose(); } var tro = new FbTransactionOptions() { TransactionBehavior = FbTransactionBehavior.NoWait | FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion }; write_transaction = conn.BeginTransaction(tro); return(write_transaction); } }
/// <inheritdoc/> public override void BeginTransaction(IsolationLevel isolationLevel) { EnsureTrasactionIsNotActive(); var transactionOptions = new FbTransactionOptions { WaitTimeout = TimeSpan.FromSeconds(10) }; switch (SqlHelper.ReduceIsolationLevel(isolationLevel)) { case IsolationLevel.ReadCommitted: transactionOptions.TransactionBehavior = FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.NoRecVersion | FbTransactionBehavior.Write | FbTransactionBehavior.NoWait; break; case IsolationLevel.Serializable: transactionOptions.TransactionBehavior = FbTransactionBehavior.Concurrency | FbTransactionBehavior.Write | FbTransactionBehavior.Wait; break; } activeTransaction = underlyingConnection.BeginTransaction(transactionOptions); }
public FbTransaction BeginTransaction(FbTransactionOptions options, string transactionName) { lock (this) { if (this.HasActiveTransaction) { throw new InvalidOperationException("A transaction is currently active. Parallel transactions are not supported."); } try { this.activeTransaction = new FbTransaction( this.owningConnection, IsolationLevel.Unspecified); this.activeTransaction.BeginTransaction(options); if (transactionName != null) { this.activeTransaction.Save(transactionName); } } catch (IscException ex) { throw new FbException(ex.Message, ex); } } return this.activeTransaction; }
private static TransactionParameterBuffer BuildTpb(FbTransactionOptions options) { var tpb = new TransactionParameterBuffer(); tpb.Append(IscCodes.isc_tpb_version3); if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Consistency)) { tpb.Append(IscCodes.isc_tpb_consistency); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Concurrency)) { tpb.Append(IscCodes.isc_tpb_concurrency); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Wait)) { tpb.Append(IscCodes.isc_tpb_wait); if (options.WaitTimeoutTPBValue.HasValue) { tpb.Append(IscCodes.isc_tpb_lock_timeout, (short)options.WaitTimeoutTPBValue); } } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.NoWait)) { tpb.Append(IscCodes.isc_tpb_nowait); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Read)) { tpb.Append(IscCodes.isc_tpb_read); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Write)) { tpb.Append(IscCodes.isc_tpb_write); } foreach (var table in options.LockTables) { int lockType; if (table.Value.HasFlag(FbTransactionBehavior.LockRead)) { lockType = IscCodes.isc_tpb_lock_read; } else if (table.Value.HasFlag(FbTransactionBehavior.LockWrite)) { lockType = IscCodes.isc_tpb_lock_write; } else { throw new ArgumentException("Must specify either LockRead or LockWrite."); } tpb.Append(lockType, table.Key); int?lockBehavior = null; if (table.Value.HasFlag(FbTransactionBehavior.Exclusive)) { lockBehavior = IscCodes.isc_tpb_exclusive; } else if (table.Value.HasFlag(FbTransactionBehavior.Protected)) { lockBehavior = IscCodes.isc_tpb_protected; } else if (table.Value.HasFlag(FbTransactionBehavior.Shared)) { lockBehavior = IscCodes.isc_tpb_shared; } if (lockBehavior.HasValue) { tpb.Append((int)lockBehavior); } } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.ReadCommitted)) { tpb.Append(IscCodes.isc_tpb_read_committed); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.Autocommit)) { tpb.Append(IscCodes.isc_tpb_autocommit); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.RecVersion)) { tpb.Append(IscCodes.isc_tpb_rec_version); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.NoRecVersion)) { tpb.Append(IscCodes.isc_tpb_no_rec_version); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.RestartRequests)) { tpb.Append(IscCodes.isc_tpb_restart_requests); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.NoAutoUndo)) { tpb.Append(IscCodes.isc_tpb_no_auto_undo); } if (options.TransactionBehavior.HasFlag(FbTransactionBehavior.ReadConsistency)) { tpb.Append(IscCodes.isc_tpb_read_consistency); } return(tpb); }
internal async Task BeginTransactionAsync(FbTransactionOptions options, CancellationToken cancellationToken = default) { _transaction = await _connection.InnerConnection.Database.BeginTransactionAsync(BuildTpb(options), cancellationToken).ConfigureAwait(false); }
internal void BeginTransaction(FbTransactionOptions options) { _transaction = _connection.InnerConnection.Database.BeginTransaction(BuildTpb(options)); }
private TransactionParameterBuffer BuildTpb(FbTransactionOptions options) { TransactionParameterBuffer tpb = new TransactionParameterBuffer(); tpb.Append(IscCodes.isc_tpb_version3); if ((options & FbTransactionOptions.Consistency) == FbTransactionOptions.Consistency) { tpb.Append(IscCodes.isc_tpb_consistency); } if ((options & FbTransactionOptions.Concurrency) == FbTransactionOptions.Concurrency) { tpb.Append(IscCodes.isc_tpb_concurrency); } if ((options & FbTransactionOptions.Shared) == FbTransactionOptions.Shared) { tpb.Append(IscCodes.isc_tpb_shared); } if ((options & FbTransactionOptions.Protected) == FbTransactionOptions.Protected) { tpb.Append(IscCodes.isc_tpb_protected); } if ((options & FbTransactionOptions.Exclusive) == FbTransactionOptions.Exclusive) { tpb.Append(IscCodes.isc_tpb_exclusive); } if ((options & FbTransactionOptions.Wait) == FbTransactionOptions.Wait) { tpb.Append(IscCodes.isc_tpb_wait); } if ((options & FbTransactionOptions.NoWait) == FbTransactionOptions.NoWait) { tpb.Append(IscCodes.isc_tpb_nowait); } if ((options & FbTransactionOptions.Read) == FbTransactionOptions.Read) { tpb.Append(IscCodes.isc_tpb_read); } if ((options & FbTransactionOptions.Write) == FbTransactionOptions.Write) { tpb.Append(IscCodes.isc_tpb_write); } if ((options & FbTransactionOptions.LockRead) == FbTransactionOptions.LockRead) { tpb.Append(IscCodes.isc_tpb_lock_read); } if ((options & FbTransactionOptions.LockWrite) == FbTransactionOptions.LockWrite) { tpb.Append(IscCodes.isc_tpb_lock_write); } if ((options & FbTransactionOptions.ReadCommitted) == FbTransactionOptions.ReadCommitted) { tpb.Append(IscCodes.isc_tpb_read_committed); } if ((options & FbTransactionOptions.Autocommit) == FbTransactionOptions.Autocommit) { tpb.Append(IscCodes.isc_tpb_autocommit); } if ((options & FbTransactionOptions.RecVersion) == FbTransactionOptions.RecVersion) { tpb.Append(IscCodes.isc_tpb_rec_version); } if ((options & FbTransactionOptions.NoRecVersion) == FbTransactionOptions.NoRecVersion) { tpb.Append(IscCodes.isc_tpb_no_rec_version); } if ((options & FbTransactionOptions.RestartRequests) == FbTransactionOptions.RestartRequests) { tpb.Append(IscCodes.isc_tpb_restart_requests); } if ((options & FbTransactionOptions.NoAutoUndo) == FbTransactionOptions.NoAutoUndo) { tpb.Append(IscCodes.isc_tpb_no_auto_undo); } return(tpb); }
private TransactionParameterBuffer BuildTpb(FbTransactionOptions options) { TransactionParameterBuffer tpb = new TransactionParameterBuffer(); tpb.Append(IscCodes.isc_tpb_version3); FbTransactionOptions[] o = (FbTransactionOptions[])Enum.GetValues(options.GetType()); for (int i = 0; i < o.Length; i++) { FbTransactionOptions option = ((FbTransactionOptions)(o[i])); if ((options & option) == option) { switch (option) { case FbTransactionOptions.Consistency: tpb.Append(IscCodes.isc_tpb_consistency); break; case FbTransactionOptions.Concurrency: tpb.Append(IscCodes.isc_tpb_concurrency); break; case FbTransactionOptions.Shared: tpb.Append(IscCodes.isc_tpb_shared); break; case FbTransactionOptions.Protected: tpb.Append(IscCodes.isc_tpb_protected); break; case FbTransactionOptions.Exclusive: tpb.Append(IscCodes.isc_tpb_exclusive); break; case FbTransactionOptions.Wait: tpb.Append(IscCodes.isc_tpb_wait); break; case FbTransactionOptions.NoWait: tpb.Append(IscCodes.isc_tpb_nowait); break; case FbTransactionOptions.Read: tpb.Append(IscCodes.isc_tpb_read); break; case FbTransactionOptions.Write: tpb.Append(IscCodes.isc_tpb_write); break; case FbTransactionOptions.LockRead: tpb.Append(IscCodes.isc_tpb_lock_read); break; case FbTransactionOptions.LockWrite: tpb.Append(IscCodes.isc_tpb_lock_write); break; case FbTransactionOptions.ReadCommitted: tpb.Append(IscCodes.isc_tpb_read_committed); break; case FbTransactionOptions.Autocommit: tpb.Append(IscCodes.isc_tpb_autocommit); break; case FbTransactionOptions.RecVersion: tpb.Append(IscCodes.isc_tpb_rec_version); break; case FbTransactionOptions.NoRecVersion: tpb.Append(IscCodes.isc_tpb_no_rec_version); break; case FbTransactionOptions.RestartRequests: tpb.Append(IscCodes.isc_tpb_restart_requests); break; case FbTransactionOptions.NoAutoUndo: tpb.Append(IscCodes.isc_tpb_no_auto_undo); break; } } } return(tpb); }
public FbTransaction BeginTransaction(FbTransactionOptions options, string transactionName) { CheckClosed(); return(_innerConnection.BeginTransaction(options, transactionName)); }
/// <include file='Doc/en_EN/FbConnection.xml' path='doc/class[@name="FbConnection"]/method[@name="BeginTransaction(FbTransactionOptions)"]/*'/> public FbTransaction BeginTransaction(FbTransactionOptions options) { return this.BeginTransaction(options, null); }
public FbTransaction BeginTransaction(FbTransactionOptions options) => BeginTransaction(options, null);
private TransactionParameterBuffer BuildTpb(FbTransactionOptions options) { TransactionParameterBuffer tpb = new TransactionParameterBuffer(); tpb.Append(IscCodes.isc_tpb_version3); if ((options & FbTransactionOptions.Consistency) == FbTransactionOptions.Consistency) { tpb.Append(IscCodes.isc_tpb_consistency); } if ((options & FbTransactionOptions.Concurrency) == FbTransactionOptions.Concurrency) { tpb.Append(IscCodes.isc_tpb_concurrency); } if ((options & FbTransactionOptions.Shared) == FbTransactionOptions.Shared) { tpb.Append(IscCodes.isc_tpb_shared); } if ((options & FbTransactionOptions.Protected) == FbTransactionOptions.Protected) { tpb.Append(IscCodes.isc_tpb_protected); } if ((options & FbTransactionOptions.Exclusive) == FbTransactionOptions.Exclusive) { tpb.Append(IscCodes.isc_tpb_exclusive); } if ((options & FbTransactionOptions.Wait) == FbTransactionOptions.Wait) { tpb.Append(IscCodes.isc_tpb_wait); } if ((options & FbTransactionOptions.NoWait) == FbTransactionOptions.NoWait) { tpb.Append(IscCodes.isc_tpb_nowait); } if ((options & FbTransactionOptions.Read) == FbTransactionOptions.Read) { tpb.Append(IscCodes.isc_tpb_read); } if ((options & FbTransactionOptions.Write) == FbTransactionOptions.Write) { tpb.Append(IscCodes.isc_tpb_write); } if ((options & FbTransactionOptions.LockRead) == FbTransactionOptions.LockRead) { tpb.Append(IscCodes.isc_tpb_lock_read); } if ((options & FbTransactionOptions.LockWrite) == FbTransactionOptions.LockWrite) { tpb.Append(IscCodes.isc_tpb_lock_write); } if ((options & FbTransactionOptions.ReadCommitted) == FbTransactionOptions.ReadCommitted) { tpb.Append(IscCodes.isc_tpb_read_committed); } if ((options & FbTransactionOptions.Autocommit) == FbTransactionOptions.Autocommit) { tpb.Append(IscCodes.isc_tpb_autocommit); } if ((options & FbTransactionOptions.RecVersion) == FbTransactionOptions.RecVersion) { tpb.Append(IscCodes.isc_tpb_rec_version); } if ((options & FbTransactionOptions.NoRecVersion) == FbTransactionOptions.NoRecVersion) { tpb.Append(IscCodes.isc_tpb_no_rec_version); } if ((options & FbTransactionOptions.RestartRequests) == FbTransactionOptions.RestartRequests) { tpb.Append(IscCodes.isc_tpb_restart_requests); } if ((options & FbTransactionOptions.NoAutoUndo) == FbTransactionOptions.NoAutoUndo) { tpb.Append(IscCodes.isc_tpb_no_auto_undo); } return tpb; }
private TransactionParameterBuffer BuildTpb(FbTransactionOptions options) { TransactionParameterBuffer tpb = new TransactionParameterBuffer(); tpb.Append(IscCodes.isc_tpb_version3); FbTransactionOptions[] o = (FbTransactionOptions[])Enum.GetValues(options.GetType()); for (int i = 0; i < o.Length; i++) { FbTransactionOptions option = ((FbTransactionOptions)(o[i])); if ((options & option) == option) { switch (option) { case FbTransactionOptions.Consistency: tpb.Append(IscCodes.isc_tpb_consistency); break; case FbTransactionOptions.Concurrency: tpb.Append(IscCodes.isc_tpb_concurrency); break; case FbTransactionOptions.Shared: tpb.Append(IscCodes.isc_tpb_shared); break; case FbTransactionOptions.Protected: tpb.Append(IscCodes.isc_tpb_protected); break; case FbTransactionOptions.Exclusive: tpb.Append(IscCodes.isc_tpb_exclusive); break; case FbTransactionOptions.Wait: tpb.Append(IscCodes.isc_tpb_wait); break; case FbTransactionOptions.NoWait: tpb.Append(IscCodes.isc_tpb_nowait); break; case FbTransactionOptions.Read: tpb.Append(IscCodes.isc_tpb_read); break; case FbTransactionOptions.Write: tpb.Append(IscCodes.isc_tpb_write); break; case FbTransactionOptions.LockRead: tpb.Append(IscCodes.isc_tpb_lock_read); break; case FbTransactionOptions.LockWrite: tpb.Append(IscCodes.isc_tpb_lock_write); break; case FbTransactionOptions.ReadCommitted: tpb.Append(IscCodes.isc_tpb_read_committed); break; case FbTransactionOptions.Autocommit: tpb.Append(IscCodes.isc_tpb_autocommit); break; case FbTransactionOptions.RecVersion: tpb.Append(IscCodes.isc_tpb_rec_version); break; case FbTransactionOptions.NoRecVersion: tpb.Append(IscCodes.isc_tpb_no_rec_version); break; case FbTransactionOptions.RestartRequests: tpb.Append(IscCodes.isc_tpb_restart_requests); break; case FbTransactionOptions.NoAutoUndo: tpb.Append(IscCodes.isc_tpb_no_auto_undo); break; } } } return tpb; }
internal void BeginTransaction(FbTransactionOptions options) { lock (this) { try { IDatabase database = this.connection.InnerConnection.Database; this.transaction = database.BeginTransaction(this.BuildTpb(options)); } catch (IscException ex) { throw new FbException(ex.Message, ex); } } }
/// <include file='Doc/en_EN/FbConnection.xml' path='doc/class[@name="FbConnection"]/method[@name="BeginTransaction(FbTransactionOptions)"]/*'/> public FbTransaction BeginTransaction(FbTransactionOptions options) { return(this.BeginTransaction(options, null)); }
public Task <FbTransaction> BeginTransactionAsync(FbTransactionOptions options, string transactionName, CancellationToken cancellationToken = default) { CheckClosed(); return(_innerConnection.BeginTransactionAsync(options, transactionName, cancellationToken)); }
/// <include file='Doc/en_EN/FbConnection.xml' path='doc/class[@name="FbConnection"]/method[@name="BeginTransaction(FbTransactionOptions, System.String)"]/*'/> public FbTransaction BeginTransaction(FbTransactionOptions options, string transactionName) { if (this.IsClosed) { throw new InvalidOperationException("BeginTransaction requires an open and available Connection."); } return this.innerConnection.BeginTransaction(options, transactionName); }
public Task <FbTransaction> BeginTransactionAsync(FbTransactionOptions options, CancellationToken cancellationToken = default) => BeginTransactionAsync(options, null, cancellationToken);