TvDatabase.TvBusinessLayer.ExecuteDeleteProgramsMySqlCommand C# (CSharp) Method

ExecuteDeleteProgramsMySqlCommand() private static method

private static ExecuteDeleteProgramsMySqlCommand ( IEnumerable deleteProgramRanges, MySqlConnection aConnection, MySql.Data.MySqlClient.MySqlTransaction aTransaction, int aDelay ) : void
deleteProgramRanges IEnumerable
aConnection MySql.Data.MySqlClient.MySqlConnection
aTransaction MySql.Data.MySqlClient.MySqlTransaction
aDelay int
return void
    private static void ExecuteDeleteProgramsMySqlCommand(IEnumerable<ProgramListPartition> deleteProgramRanges,
                                                          MySqlConnection aConnection,
                                                          MySqlTransaction aTransaction, int aDelay)
    {
      int aCounter = 0;
      MySqlCommand sqlCmd = new MySqlCommand();

      sqlCmd.CommandText =
        "DELETE FROM Program WHERE idChannel = ?idChannel AND ((endTime > ?rangeStart AND startTime < ?rangeEnd) OR (startTime = endTime AND startTime BETWEEN ?rangeStart AND ?rangeEnd))";

      sqlCmd.Parameters.Add("?idChannel", MySqlDbType.Int32);
      sqlCmd.Parameters.Add("?rangeStart", MySqlDbType.DateTime);
      sqlCmd.Parameters.Add("?rangeEnd", MySqlDbType.DateTime);

      try
      {
        sqlCmd.Connection = aConnection;
        sqlCmd.Transaction = aTransaction;
        // Prepare the command since we will reuse it quite often
        sqlCmd.Prepare();
      }
      catch (Exception ex)
      {
        Log.Info("BusinessLayer: ExecuteDeleteProgramsMySqlCommand - Prepare caused an Exception - {0}", ex.Message);
        throw;
      }

      foreach (ProgramListPartition partition in deleteProgramRanges)
      {
        sqlCmd.Parameters["?idChannel"].Value = partition.IdChannel;
        sqlCmd.Parameters["?rangeStart"].Value = partition.Start;
        sqlCmd.Parameters["?rangeEnd"].Value = partition.End;
        try
        {
          // Finally insert all our data
          sqlCmd.ExecuteNonQuery();
          aCounter++;
          // Avoid I/O starving
          if (aCounter % 3 == 0)
          {
            Thread.Sleep(aDelay);
          }
        }
        catch (Exception ex)
        {
          Log.Info("BusinessLayer: ExecuteDeleteProgramsMySqlCommand caused an Exception - {0}, {1}", ex.Message,
                   ex.StackTrace);
          throw;
        }
      }
      return;
    }

Same methods

TvBusinessLayer::ExecuteDeleteProgramsMySqlCommand ( IEnumerable channelIds, MySqlConnection aConnection, MySql.Data.MySqlClient.MySqlTransaction aTransaction, int aDelay ) : void
TvBusinessLayer