/// <summary> /// Disposes the parameters and prepared statements, and also the database connection if applicable /// </summary> internal override void Close() { while (!(PreparedStatementListHead is null)) { var next = PreparedStatementListHead.PreparedStatementListNext; PreparedStatementListHead.PreparedStatementListNext = null; // DBSqlServerPreparedCommand.Dispose() does not throw exceptions PreparedStatementListHead.Dispose(); PreparedStatementListHead = next; } while (!(ParameterListHead is null)) { var next = ParameterListHead.ParameterListNext; ParameterListHead.ParameterListNext = null; // DBSqlServerParameter.Dispose() does not throw exceptions ParameterListHead.Dispose(); ParameterListHead = next; } // Dispose the database connection if applicable base.Close(); }
/// <summary> /// Adds a prepared statement to the disposal linked list /// </summary> /// <param name="preparedStatement">New prepared statement</param> /// <returns>A reference to the new prepared statement</returns> private DBSqlServerPreparedStatement AddPreparedStatement(DBSqlServerPreparedStatement preparedStatement) { try { // Set new prepared statement as the head of the linked list preparedStatement.PreparedStatementListNext = PreparedStatementListHead; PreparedStatementListHead = preparedStatement; return(preparedStatement); } catch (Exception) { preparedStatement?.Dispose(); throw; } }