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" ] += "
" + 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" ]; } } } }