All pastes #202824 Raw Edit

Shin-Ra

public text v1 · immutable
#202824 ·published 2006-10-14 19:36 UTC
rendered paste body
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Web;

namespace DarkBulletin.Data
{
    public sealed class QueryInfo : IDisposable
    {
        private Stopwatch stopwatch = new Stopwatch( );
        private String qc_cmd;
        
        public QueryInfo(string sql)
        {
            qc_cmd = sql;
            if( HttpContext.Current.Items[ "NumQueries" ] == null )
            {
                HttpContext.Current.Items[ "NumQueries" ] = 1;
            }
            else
            {
                HttpContext.Current.Items[ "NumQueries" ] = 1 + ( Int32 ) HttpContext.Current.Items[ "NumQueries" ];
            }
            stopwatch.Start( );
        }
        #region IDisposable Members

        public void Dispose( )
        {
            stopwatch.Stop( );
            double duration = stopwatch.ElapsedMilliseconds / 1000.0;
            qc_cmd = string.Format ( "{0}: {1:N3}" , qc_cmd , duration );
            
            if( HttpContext.Current.Items[ "TimeQueries" ] == null )
            {
                HttpContext.Current.Items[ "TimeQueries" ] = duration;
            }
            else
            {
                HttpContext.Current.Items[ "TimeQueries" ] = duration
                                                             + ( double ) HttpContext.Current.Items[ "TimeQueries" ];
                if(HttpContext.Current.Items["CmdQueries"] == null)
                {
                    HttpContext.Current.Items[ "CmdQueries" ] = qc_cmd;
                }
                else
                {
                    HttpContext.Current.Items[ "CmdQueries" ] += "<br />" + qc_cmd;
                }
            }
        }
        #endregion
        public static void Reset( )
        {
            HttpContext.Current.Items[ "NumQueries" ] = 0;
            HttpContext.Current.Items[ "TimeQueries" ] = ( double ) 0;
            HttpContext.Current.Items[ "CmdQueries" ] = "";
        }
        public static int Count
        {
            get { return ( Int32 ) HttpContext.Current.Items[ "NumQueries" ]; }
        }
        public static double Duration
        {
            get { return ( double ) HttpContext.Current.Items[ "TimeQueries" ]; }
        }
        public static string Commands
        {
            get { return ( string ) HttpContext.Current.Items[ "CmdQueries" ]; }
        }
    }
}