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

namespace UUN
{
    /// <summary>
    /// 网站的缓存更新
    /// </summary>
    public class 更新缓存数据
    {
        private HttpContext HC;
        private SqlConnection 连接;
        public 更新缓存数据(HttpContext HC, SqlConnection 连接)
        {
            this.HC = HC;
            this.连接 = 连接;
        }
        /// <summary>
        /// 开始更新缓存的数据
        /// </summary>
        public void 开始更新()
        {
            设置 更新时间 = new 设置(File.ReadAllText(HC.Server.MapPath("~/Data/GengXin.xml"), Encoding.UTF8));

            HC.Application.Lock();
            更新非空数据();

            if (Convert.ToDateTime(更新时间["更新时间_1周"]) < DateTime.Now - new TimeSpan(7, 0, 0, 0))
            {
                更新时间["更新时间_1周"] = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
                File.WriteAllText(HC.Server.MapPath("~/Data/GengXin.xml"), 更新时间.生成XML());
                更新一周数据();
            }
            if (Convert.ToDateTime(更新时间["更新时间_1天"]) < DateTime.Now - new TimeSpan(1, 0, 0, 0))
            {
                更新时间["更新时间_1天"] = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
                File.WriteAllText(HC.Server.MapPath("~/Data/GengXin.xml"), 更新时间.生成XML());
                更新一日数据();
            }
            if (Convert.ToDateTime(更新时间["更新时间_1小时"]) < DateTime.Now - new TimeSpan(1, 0, 0))
            {
                更新时间["更新时间_1小时"] = DateTime.Now.ToString("yyyy-MM-dd HH:00:00");
                File.WriteAllText(HC.Server.MapPath("~/Data/GengXin.xml"), 更新时间.生成XML());
                更新一小时数据();
            }
            if (Convert.ToDateTime(更新时间["更新时间_5分钟"]) < DateTime.Now - new TimeSpan(0, 5, 0))
            {
                更新时间["更新时间_5分钟"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");
                File.WriteAllText(HC.Server.MapPath("~/Data/GengXin.xml"), 更新时间.生成XML());
                更新五分钟数据();
            }

            HC.Application.UnLock();
        }

        private void 更新非空数据()
        {
            if (HC.Application["UUN_UUN3G_ZaiXianYongHuShu"] == null)
                用户数据_更新在线人数();
            if (HC.Application["UUN_UUN3G_YongHuZu"] == null)
                用户组数据_更新用户组();
            if (HC.Application["UUN_UUN3G_DenJiChenHu"] == null)
                用户数据_更新等级称呼();
            if (HC.Application["UUN_UUN3G_JiHuaRenWu"] == null)
                计划任务_更新计划任务();
            if (HC.Application["UUN_UUN3G_NeiRongLanMu"] == null)
                内容栏目_更新();
            if (HC.Application["UUN_UUN3G_LunTanBanKuai"] == null)
                论坛版块_更新();
            if (HC.Application["UUN_UUN3G_GuangGao"] == null)
                广告_更新广告();
            if (HC.Application["UUN_UUN3G_LiuYanBen"] == null)
                留言本_更新留言本();
            if (HC.Application["UUN_UUN3G_LiuYanBiaoQing"] == null)
                留言表情_更新();
        }

        public void 留言表情_更新()
        {
            SqlCommand 语句 = new SqlCommand("SELECT * FROM [" + 程序.数据表前缀 + "其它_留言_留言表情] ORDER BY [ID]", 连接);
            DataSet 数据=new DataSet();
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "留言表情");
            HC.Application["UUN_UUN3G_LiuYanBiaoQing"] = 数据;
        }

        private void 模板_获取参数值(FileInfo FI, String 参数, out int ID, out String 值)
        {
            ID=0;
            值="";
            XmlReader 读取 = XmlReader.Create(FI.OpenRead());

            while (读取.Read())
                if (读取.NodeType == XmlNodeType.Element)
                    if (读取.Name == "set")
                        if (读取.GetAttribute("name") == "ID")
                            ID = Convert.ToInt32(读取.GetAttribute("value"));
                        else
                            if (读取.GetAttribute("name") == 参数)
                                值 = 读取.GetAttribute("value");

            读取.Close();
        }

        private void 更新一周数据()
        {
            统计数据_重置周数据();
        }

        private void 更新一日数据()
        {
            统计数据_更新日数据();
        }

        private void 更新一小时数据()
        {
            统计数据_刷新今日统计数据();
        }

        private void 更新五分钟数据()
        {
            用户数据_更新在线人数();
        }

        public void 留言本_更新留言本()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT * FROM [" + 程序.数据表前缀 + "其它_留言_留言本]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "留言");
            HC.Application["UUN_UUN3G_LiuYanBen"] = 数据;
        }

        public void 广告_更新广告()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT * FROM ["+程序.数据表前缀+"其它_广告_广告]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "广告");
            HC.Application["UUN_UUN3G_GuangGao"] = 数据;
        }

        public void 内容栏目_更新()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT * FROM ["+程序.数据表前缀+"内容_栏目] ORDER BY [ID]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "内容栏目");
            HC.Application["UUN_UUN3G_NeiRongLanMu"] = 数据;
        }

        public void 论坛版块_更新()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT * FROM [" + 程序.数据表前缀 + "社区_论坛_版块] ORDER BY [排序]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "论坛版块");
            HC.Application["UUN_UUN3G_LunTanBanKuai"] = 数据;
        }

        public void 计划任务_更新计划任务()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT [ID],[更新频率],[操作文件],[最后执行时间] FROM ["+程序.数据表前缀+"网站_计划任务] WHERE [启用状态]=@启用状态 ORDER BY [ID]", 连接);
            语句.Parameters.Add("@启用状态", SqlDbType.Bit).Value = true;
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "计划任务");
            HC.Application["UUN_UUN3G_JiHuaRenWu"] = 数据;
        }

        //用户数据更新

        private void 用户数据_更新在线人数()
        {
            用户 用户 = new 用户(HC, 连接);
            用户.更新在线人数();
        }
        /// <summary>
        /// 更新等级称呼缓存
        /// </summary>
        public void 用户数据_更新等级称呼()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT [ID],[等级],[称呼] FROM ["+程序.数据表前缀+"社区_用户_等级称呼]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "等级称呼");
            HC.Application["UUN_UUN3G_DenJiChenHu"] = 数据;
        }

        //用户组数据更新
        /// <summary>
        /// 更新用户组数据的缓存
        /// </summary>
        public void 用户组数据_更新用户组()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT * FROM ["+程序.数据表前缀+"社区_用户_用户组]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "用户组");
            HC.Application["UUN_UUN3G_YongHuZu"] = 数据;
        }
        /*
        public void 模板变量_更新模板变量()
        {
            Hashtable 模板变量=new Hashtable();
            DataSet 数据=new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT [变量名称],[变量值],[描述],[创建时间] FROM ["+程序.数据表前缀+"模板_模板变量]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "模板变量");

            FileInfo[] FIS = new DirectoryInfo(HC.Server.MapPath("~/Data/BiaoQian/模板变量/")).GetFiles("*.txt");
            for (int i = 0; i < FIS.Length; i++)
                FIS[i].Delete();

            设置 Data = new 设置("");

            for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
            {
                DataRow 行 = 数据.Tables[0].Rows[i];
                模板变量.Add(行["变量名称"].ToString(), 行["变量值"].ToString());

                Data.数据项.Add(行["变量名称"].ToString(), "{$@" + 行["变量名称"] + "$}");

                String 帮助代码 = "<strong>" + HC.Server.HtmlEncode(行["变量名称"].ToString()) + "</strong><br/><hr/>";
                帮助代码 += "代码：{$@" + HC.Server.HtmlEncode(行["变量名称"].ToString()) + "$}<br/>";
                帮助代码 += "说明：" + HC.Server.HtmlEncode(行["描述"].ToString()) + "<br/>";
                帮助代码 += "值：" + HC.Server.HtmlEncode(行["变量值"].ToString());

                File.WriteAllText(HC.Server.MapPath("~/Data/BiaoQian/模板变量/" + 行["变量名称"] + ".txt"), 帮助代码, Encoding.UTF8);
            }
            HC.Application["UUN_UUN3G_MoBanBianLiang"] = 模板变量;
            File.WriteAllText(HC.Server.MapPath("~/Data/BiaoQian/模板变量/Data.xml"), Data.生成XML());
        }

        public void 高级模板变量_更新模板变量()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT [变量名称],[变量值],[描述] FROM [高级模板变量]", 连接);
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "高级模板变量");
            
            设置 Data=new 设置("");
            for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
            {
                DataRow 行 = 数据.Tables[0].Rows[i];

                Data.数据项.Add(行["变量名称"].ToString(),"{$*"+行["变量名称"]+"$}");
                String 帮助代码 = "<strong>" + HC.Server.HtmlEncode(行["变量名称"].ToString()) + "</strong><br/><hr/>";
                帮助代码 += "代码：{$*" + HC.Server.HtmlEncode(行["变量名称"].ToString()) + "$}<br/>";
                帮助代码 += "说明：" + HC.Server.HtmlEncode(行["描述"].ToString()) + "<br/>";
                帮助代码 += "值：" + HC.Server.HtmlEncode(行["变量值"].ToString());

                File.WriteAllText(HC.Server.MapPath("~/Data/BiaoQian/高级模板变量/"+行["变量名称"]+".txt"), 帮助代码, Encoding.UTF8);
            }
            File.WriteAllText(HC.Server.MapPath("~/Data/BiaoQian/高级模板变量/Data.xml"), Data.生成XML(), Encoding.UTF8);
        }*/

        //访问统计数据更新

        private void 统计数据_重置周数据()
        {
            设置 访问统计_总体统计 = new 设置(File.ReadAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), Encoding.UTF8));
            访问统计_总体统计["周点击数"] = 0;
            访问统计_总体统计["周IP数"] = 0;
            File.WriteAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), 访问统计_总体统计.生成XML(), Encoding.UTF8);
        }

        private void 统计数据_更新日数据()
        {
            用户 用户 = new 用户(HC, 连接);
            用户.重置访问次数();

            更新日数据_统计报告();

            更新日数据_访问记录();

            更新日数据_会员活动信息();

            更新日数据_数据清理();
        }

        private void 更新日数据_数据清理()
        {
            更新日数据_数据清理_积分历史记录();
            更新日数据_数据清理_错误日志();
            更新日数据_数据清理_后台登录日志();
            更新日数据_数据清理_管理记录();
            更新日数据_数据清理_访问统计报告();
        }

        private DateTime 获取过期时间(String 时间值)
        {
            DateTime 过期时间 = DateTime.Now;
            switch (时间值)
            {
                case "一天之前":
                    过期时间 = DateTime.Now - new TimeSpan(1, 0, 0, 0);
                    break;
                case "一周之前":
                    过期时间 = DateTime.Now - new TimeSpan(7, 0, 0, 0);
                    break;
                case "一月之前":
                    过期时间 = DateTime.Now - new TimeSpan(30, 0, 0, 0);
                    break;
            }

            return 过期时间;
        }

        private void 更新日数据_数据清理_积分历史记录()
        {
            String 值 = Convert.ToString(程序.设置["数据清理_积分历史记录"]);
            if (值 != "不清理")
            {
                DateTime 过期时间 = 获取过期时间(值);
                SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_用户_积分记录] WHERE [创建时间]<@创建时间", this.连接);
                语句.Parameters.Add("@创建时间", SqlDbType.DateTime).Value = 过期时间;
                语句.ExecuteNonQuery();
            }
        }

        private void 更新日数据_数据清理_错误日志()
        {
            String 值 = Convert.ToString(程序.设置["数据清理_错误日志"]);
            if (值 != "不清理")
            {
                DateTime 过期时间 = 获取过期时间(值);
                SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_错误日志] WHERE [出错时间]<@出错时间", this.连接);
                语句.Parameters.Add("@出错时间", SqlDbType.DateTime).Value = 过期时间;
                语句.ExecuteNonQuery();
            }
        }

        private void 更新日数据_数据清理_后台登录日志()
        {
            String 值 = Convert.ToString(程序.设置["数据清理_后台登录日志"]);
            if (值 != "不清理")
            {
                DateTime 过期时间 = 获取过期时间(值);
                SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_管理员登录日志] WHERE [登录时间]<@登录时间", this.连接);
                语句.Parameters.Add("@登录时间", SqlDbType.DateTime).Value = 过期时间;
                语句.ExecuteNonQuery();
            }
        }

        private void 更新日数据_数据清理_管理记录()
        {
            String 值 = Convert.ToString(程序.设置["数据清理_管理记录"]);
            if (值 != "不清理")
            {
                DateTime 过期时间 = 获取过期时间(值);
                SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_管理记录] WHERE [时间]<@时间", this.连接);
                语句.Parameters.Add("@时间", SqlDbType.DateTime).Value = 过期时间;
                语句.ExecuteNonQuery();
            }
        }

        private void 更新日数据_数据清理_访问统计报告()
        {
            String 值 = Convert.ToString(程序.设置["数据清理_访问统计报告"]);
            if (值 != "不清理")
            {
                DateTime 过期时间 = 获取过期时间(值);
                SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_统计报告] WHERE [日期]<@日期", this.连接);
                语句.Parameters.Add("@日期", SqlDbType.DateTime).Value = 过期时间;
                语句.ExecuteNonQuery();
            }
        }

        private void 更新日数据_会员活动信息()
        {
            SqlCommand 语句 = new SqlCommand("DELETE FROM ["+程序.数据表前缀+"社区_会员活动信息]", 连接);
            语句.ExecuteNonQuery();
        }

        private void 更新日数据_访问记录()
        {
            设置 访问统计_总体统计 = new 设置(File.ReadAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), Encoding.UTF8));

            访问统计_总体统计["统计天数"] = Convert.ToInt32((DateTime.Now - Convert.ToDateTime(访问统计_总体统计["开始统计时间"])).TotalDays);

            访问统计_访问记录 访问记录 = new 访问统计_访问记录(HC, 连接);
            int 今访问数 = 访问记录.获取记录总数();
            访问统计_IP记录 IP记录 = new 访问统计_IP记录(HC, 连接);
            int 今IP数 = IP记录.获取记录总数();

            访问统计_总体统计["总点击数"] = Convert.ToInt32(访问统计_总体统计["总点击数"]) + 今访问数;
            访问统计_总体统计["周点击数"] = Convert.ToInt32(访问统计_总体统计["周点击数"]) + 今访问数;
            访问统计_总体统计["今点击数"] = 0;
            访问统计_总体统计["昨点击数"] = 今访问数;
            访问统计_总体统计["总IP数"] = Convert.ToInt32(访问统计_总体统计["总IP数"]) + 今IP数;
            访问统计_总体统计["周IP数"] = Convert.ToInt32(访问统计_总体统计["周IP数"]) + 今IP数;
            访问统计_总体统计["今IP数"] = 0;
            访问统计_总体统计["昨IP数"] = 今IP数;

            File.WriteAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), 访问统计_总体统计.生成XML(), Encoding.UTF8);

            访问记录.清空记录();
            IP记录.清空记录();
        }

        private void 更新日数据_统计报告()
        {
            int 点击数, IP数, 地区数, 浏览器数, 来源数;

            SqlCommand 语句 = new SqlCommand("SELECT COUNT(ID) FROM ["+程序.数据表前缀+"其它_访问统计_访问记录]", 连接);
            点击数 = Convert.ToInt32(语句.ExecuteScalar());
            语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_IP记录]", 连接);
            IP数 = Convert.ToInt32(语句.ExecuteScalar());
            语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_地区记录]", 连接);
            地区数 = Convert.ToInt32(语句.ExecuteScalar());
            语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_浏览器记录]", 连接);
            浏览器数 = Convert.ToInt32(语句.ExecuteScalar());
            语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_来源记录]", 连接);
            来源数 = Convert.ToInt32(语句.ExecuteScalar());

            int ZGID=常用.SQL_最高ID(连接,程序.数据表前缀+"其它_访问统计_统计报告");
            语句 = new SqlCommand("INSERT INTO ["+程序.数据表前缀+"其它_访问统计_统计报告]([ID],[日期],[点击数],[IP数],[地区数],[浏览器数],[来源数])" +
                "VALUES(@ID,@日期,@点击数,@IP数,@地区数,@浏览器数,@来源数)", 连接);
            语句.Parameters.Add("@ID", SqlDbType.Int).Value = ZGID;
            语句.Parameters.Add("@日期", SqlDbType.DateTime).Value = DateTime.Now-new TimeSpan(1,0,0,0);
            语句.Parameters.Add("@点击数", SqlDbType.Int).Value = 点击数;
            语句.Parameters.Add("@IP数", SqlDbType.Int).Value = IP数;
            语句.Parameters.Add("@地区数", SqlDbType.Int).Value = 地区数;
            语句.Parameters.Add("@浏览器数", SqlDbType.Int).Value = 浏览器数;
            语句.Parameters.Add("@来源数", SqlDbType.Int).Value = 来源数;
            语句.ExecuteNonQuery();
        }

        private void 统计数据_刷新今日统计数据()
        {
            设置 访问统计_总体统计 = new 设置(File.ReadAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), Encoding.UTF8));

            访问统计_访问记录 访问记录 = new 访问统计_访问记录(HC, 连接);
            访问统计_总体统计["今点击数"] = 访问记录.获取记录总数();
            访问统计_IP记录 IP记录 = new 访问统计_IP记录(HC, 连接);
            访问统计_总体统计["今IP数"] = IP记录.获取记录总数();

            File.WriteAllText(HC.Server.MapPath("~/Data/TongJi/ZongTi.xml"), 访问统计_总体统计.生成XML(), Encoding.UTF8);

            更新一小时数据_生成统计数据();
        }

        private void 更新一小时数据_生成统计数据()
        {
            Hashtable 地区记录 = new Hashtable();
            Hashtable 来源记录 = new Hashtable();
            Hashtable 浏览器记录 = new Hashtable();
            Hashtable 内容类型记录 = new Hashtable();
            SqlCommand 语句 = new SqlCommand("SELECT [所在地区],[浏览器],[来源网站],[内容类型] FROM ["+程序.数据表前缀+"其它_访问统计_访问记录]", 连接);
            SqlDataReader 读取 = 语句.ExecuteReader();
            while (读取.Read())
            {
                String 所在地区 = Convert.ToString(读取["所在地区"]);
                String 浏览器 = Convert.ToString(读取["浏览器"]);
                String 来源网站 = Convert.ToString(读取["来源网站"]);
                String 内容类型 = Convert.ToString(读取["内容类型"]);
                if (浏览器 == "")
                    浏览器 = "未知";
                if (来源网站 == "")
                    来源网站 = "无";
                地区记录[所在地区] = Convert.ToInt32(地区记录[所在地区]) + 1;
                浏览器记录[浏览器] = Convert.ToInt32(浏览器记录[浏览器]) + 1;
                来源记录[来源网站] = Convert.ToInt32(来源记录[来源网站]) + 1;
                内容类型记录[内容类型] = Convert.ToInt32(内容类型记录[内容类型]) + 1;
            }
            读取.Close();
            生成统计数据(地区记录, 来源记录, 浏览器记录, 内容类型记录);
        }

        private void 删除统计数据()
        {
            SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_地区记录]", 连接);
            语句.ExecuteNonQuery();
            语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_来源记录]", 连接);
            语句.ExecuteNonQuery();
            语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_浏览器记录]", 连接);
            语句.ExecuteNonQuery();
            语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_内容类型]", 连接);
            语句.ExecuteNonQuery();
        }

        private void 生成统计数据(Hashtable 地区记录, Hashtable 来源记录, Hashtable 浏览器记录, Hashtable 内容类型记录)
        {
            删除统计数据();
            SqlCommand 语句;
            int i = 1;
            foreach (object 键 in 地区记录.Keys)
	        {
                object 值=地区记录[键];
                语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "其它_访问统计_地区记录]([ID],[所在地区],[访问次数])VALUES(@ID,@所在地区,@访问次数)", 连接);
                语句.Parameters.Add("@ID", SqlDbType.Int).Value = i;
                语句.Parameters.Add("@所在地区", SqlDbType.NVarChar).Value = 键;
                语句.Parameters.Add("@访问次数", SqlDbType.Int).Value = 值;
                语句.ExecuteNonQuery();
                i++;
            }
            i = 1;
            foreach (object 键 in 来源记录.Keys)
            {
                object 值 = 来源记录[键];
                语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "其它_访问统计_来源记录]([ID],[来源网站],[访问次数])VALUES(@ID,@来源网站,@访问次数)", 连接);
                语句.Parameters.Add("@ID", SqlDbType.Int).Value = i;
                语句.Parameters.Add("@来源网站", SqlDbType.NVarChar).Value = 键;
                语句.Parameters.Add("@访问次数", SqlDbType.Int).Value = 值;
                语句.ExecuteNonQuery();
                i++;
            }
            i = 1;
            foreach (object 键 in 浏览器记录.Keys)
            {
                object 值 = 浏览器记录[键];
                语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "其它_访问统计_浏览器记录]([ID],[浏览器],[访问次数])VALUES(@ID,@浏览器,@访问次数)", 连接);
                语句.Parameters.Add("@ID", SqlDbType.Int).Value = i;
                语句.Parameters.Add("@浏览器", SqlDbType.NVarChar).Value = 键;
                语句.Parameters.Add("@访问次数", SqlDbType.Int).Value = 值;
                语句.ExecuteNonQuery();
                i++;
            }
            i = 1;
            foreach (object 键 in 内容类型记录.Keys)
            {
                object 值 = 内容类型记录[键];
                语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "其它_访问统计_内容类型]([ID],[内容类型],[访问次数])VALUES(@ID,@内容类型,@访问次数)", 连接);
                语句.Parameters.Add("@ID", SqlDbType.Int).Value = i;
                语句.Parameters.Add("@内容类型", SqlDbType.NVarChar).Value = 键;
                语句.Parameters.Add("@访问次数", SqlDbType.Int).Value = 值;
                语句.ExecuteNonQuery();
                i++;
            }
        }
    }
}