独上高楼网站
  • Google
  •    你所在位置:首页 VS.netASP.net编程经验〉在ASP.net中网站访问量统计方法—获取IP数据信息的类
  • 在ASP.net中网站访问量统计方法—获取IP数据信息的类
  • 作者:王宏喜  文章来源:独上高楼  发布日期:2008-05-13  浏览次数:416
  • 打印这篇文章
  • using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Text;

    ///


    /// 获取IP数据信息的类
    ///
    public class IPControl
    {
        //常量用来表示T-SQL语句中用到的变量名称
        private const string PARM_IP_ADDRESS = "@IPAddress";
        private const string PARM_IP_SRC = "@IPSrc";
        private const string PARM_IP_DATETIME = "@IPDateTime";
        //T-SQL语句
        private const string SQL_INSERT_IPSTAT = "INSERT INTO IPStat VALUES(@IPAddress,@IPSrc,@IPDateTime)";
        private const string SQL_DELETE_IPSTAT = "delete from IPStat WHERE DATEDIFF(d,ip_datetime,getdate())>30";  //只保留一个月的数据
        private const string SQL_SELECT_TOTAL = "SELECT COUNT(*) FROM IPStat ";
        private const string SQL_SELECT_TODAY = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())=0";
        private const string SQL_SELECT_YESTERDAY = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())=1";
        private const string SQL_SELECT_MONTH = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())<30 and DATEDIFF(mm,ip_datetime,getdate())=0";
       
     public IPControl()
     {
     }
        ///
        /// 保存IP数据信息到数据库
        /// ip地址
        /// ip来源
        /// ip访问时间
        public void AddIP(string ipAddress,string ipSrc,DateTime ipDatetime)
        {
            //构建连接语句字符串
            StringBuilder strSQL = new StringBuilder();
            //创建表示QQ号的参数
            SqlParameter[] parms = new SqlParameter[] { new SqlParameter(PARM_IP_ADDRESS, SqlDbType.NVarChar, 20),
                new SqlParameter(PARM_IP_SRC, SqlDbType.NVarChar,80),
                new SqlParameter(PARM_IP_DATETIME, SqlDbType.DateTime)};
            SqlCommand cmd = new SqlCommand();

            // 依次给参数赋值,并添加到执行语句中
            parms[0].Value = ipAddress;
            parms[1].Value = ipSrc;
            parms[2].Value = ipDatetime;
            foreach(SqlParameter parm in parms)
                cmd.Parameters.Add(parm);

            //定义对象资源保存的范围,一旦using范围结束,将释放对方所占的资源
            using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
            {
                //在执行字符串中加载插入语句
                strSQL.Append(SQL_INSERT_IPSTAT);
                conn.Open();

                //设定SqlCommand的属性
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = strSQL.ToString();
                //执行SqlCommand命令
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                //如果执行成功,返回true,否则false。
            }
        }
        public string GetTotal()
        {
            //调用SqlHelper访问组件的方法返回第一行第一列的值
           object  count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_TOTAL, null);
            //返回统计结果
            return count.ToString();
        }
        public string GetToday()
        {
            //调用SqlHelper访问组件的方法返回第一行第一列的值
            object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_TODAY, null);
            //返回统计结果
            return count.ToString();
        }
        public string GetYesterday()
        {
            //调用SqlHelper访问组件的方法返回第一行第一列的值
            object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_YESTERDAY, null);
            //返回统计结果
            return count.ToString();
        }
        public string GetMonth()
        {
            //调用SqlHelper访问组件的方法返回第一行第一列的值
            object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_MONTH, null);
            //返回统计结果
            return count.ToString();
        }
    }
     

  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页