//------------------------------------------------------------------------------
        //
        // Method: ProcessCountMetricEvent
        //
        //------------------------------------------------------------------------------
        /// <summary>
        /// Writes a count metric event to the database.
        /// </summary>
        /// <param name="countMetricEvent">The count metric event to write.</param>
        protected override void ProcessCountMetricEvent(CountMetricEventInstance countMetricEvent)
        {
            StringBuilder sqlInsertStatement = new StringBuilder();

            sqlInsertStatement.Append("INSERT ");
            sqlInsertStatement.Append("INTO    CountMetricInstances ");
            sqlInsertStatement.Append("        ( CmetId, ");
            sqlInsertStatement.Append("          CtgrId, ");
            sqlInsertStatement.Append("          [Timestamp] ");
            sqlInsertStatement.Append("          ) ");
            sqlInsertStatement.Append("SELECT  Cmet.CmetId, ");
            sqlInsertStatement.Append("        Ctgr.CtgrId, ");
            sqlInsertStatement.Append("        '" + countMetricEvent.EventTime.ToString("yyyy-MM-dd HH:mm:ss") + "' ");
            sqlInsertStatement.Append("FROM    CountMetrics Cmet, ");
            sqlInsertStatement.Append("        Categories Ctgr ");
            sqlInsertStatement.Append("WHERE   Cmet.Name = '" + countMetricEvent.Metric.Name + "' ");
            sqlInsertStatement.Append("  AND   Ctgr.Name = '" + metricCategoryName + "';");

            dbCommand.CommandText = sqlInsertStatement.ToString();

            try
            {
                dbCommand.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                exceptionHandler.Handle(new Exception("Failed to insert instance of count metric '" + countMetricEvent.Metric.Name + "'.", e));
            }
        }