using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Text;

namespace UUN
{
    /// <summary>
    /// 网站访问IP记录的相关操作
    /// </summary>
    public class 访问统计_IP记录
    {
        private HttpContext HC;
        private SqlConnection 连接;
        public 访问统计_IP记录(HttpContext HC, SqlConnection 连接)
        {
            this.HC = HC;
            this.连接 = 连接;
        }
        /// <summary>
        /// 向数据库增加一条IP记录
        /// </summary>
        /// <param name="IP">记录的IP</param>
        /// <param name="地区">记录的访问地区</param>
        public void 记录(String IP,String 地区)
        {
            SqlCommand 语句 = new SqlCommand("SELECT [ID] FROM ["+程序.数据表前缀+"其它_访问统计_IP记录] WHERE [IP]=@IP", 连接);
            语句.Parameters.Add("@IP", SqlDbType.NVarChar).Value = IP;
            SqlDataReader 读取 = 语句.ExecuteReader();
            bool 是否存在 = 读取.HasRows;
            读取.Close();
            if (!是否存在)
            {
                HC.Application.Lock();
                int ZGID = 常用.SQL_最高ID(连接, 程序.数据表前缀+"其它_访问统计_IP记录");
                语句 = new SqlCommand("INSERT INTO ["+程序.数据表前缀+"其它_访问统计_IP记录]([ID],[IP],[所在地区])VALUES(@ID,@IP,@所在地区)", 连接);
                语句.Parameters.Add("@ID", SqlDbType.Int).Value = ZGID;
                语句.Parameters.Add("@IP", SqlDbType.NVarChar).Value = IP;
                语句.Parameters.Add("@所在地区", SqlDbType.NVarChar).Value = 地区;
                语句.ExecuteNonQuery();
                HC.Application.UnLock();
            }
        }
        /// <summary>
        /// 更新某个IP的访问次数
        /// </summary>
        /// <param name="IP">指定的IP</param>
        public void 更新访问次数(String IP)
        {
            SqlCommand 语句 = new SqlCommand("UPDATE [" + 程序.数据表前缀 + "其它_访问统计_IP记录] SET [访问次数]=[访问次数]+1,[最后访问时间]=@最后访问时间 WHERE [IP]=@IP", 连接);
            语句.Parameters.Add("@IP", SqlDbType.NVarChar).Value = IP;
            语句.Parameters.Add("@最后访问时间", SqlDbType.DateTime).Value = DateTime.Now;
            语句.ExecuteNonQuery();
        }
        /// <summary>
        /// 获取今日的总IP数
        /// </summary>
        /// <returns></returns>
        public int 获取记录总数()
        {
            SqlCommand 语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_IP记录]", 连接);
            return Convert.ToInt32(语句.ExecuteScalar());
        }
        /// <summary>
        /// 清空所有的访问记录
        /// </summary>
        public void 清空记录()
        {
            SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_IP记录]", 连接);
            语句.ExecuteNonQuery();
        }
    }
}