关于百度优化中减少访问数据库的处理

本文介绍了一种数据处理机制,该机制通过循环遍历数据集并根据特定条件更新已刷次数与数据库记录,同时实现了根据不同情况对数据进行聚合处理及数据库更新的方法。
//当所有的词循环到了最后的一个的时候开始对数据进行处理
                if (i == dtWorld.Rows.Count - 1)
                {
                    //判断是否已经循环完毕,如果完 先根据guideid聚合,取出其中的要刷次数,已刷次数
                    DataTable dtt = dtWorld.DefaultView.ToTable(true, "clicktimes", "NeedClick", "guideid");
                    //遍历所有的行
                    foreach (DataRow drs in dtt.Rows)
                    {
                        //如果说这次刷完,要刷的次数跟已刷的次数一样,则将数据库这组词的时间更新为当前时间,将datatable表中的是这个guideid的所有行全部删除
                        if (Convert.ToInt32(drs["clicktimes"]) + 1 == Convert.ToInt32(drs["NeedClick"]))
                        {
                            //如果条件满足就移除datatable表中的是这个guideid的所有行
                            DataRow[] ro = dtWorld.Select(string.Format("guideid={0}", drs["guideid"]));
                            foreach (DataRow ds in ro)
                            {
                                dtWorld.Rows.Remove(ds);
                            }
                            //更新数据库的 clicktime
                            string SqlUpDate = string.Format("update guideworld set clicktime=getdate(), clicktimes=clicktimes+1 where  guideid={0}", drs["guideid"]);
                            SqlHelper.ExecuteNonQuery(conStr, CommandType.Text, SqlUpDate);
                        }
                        //如果不是最后一次刷
                        else
                        {
                            //循环将所有的是这个guideid的已刷次数都更新一次
                            DataRow[] rows = dtWorld.Select(string.Format("guideid={0}", drs["guideid"]));
                            for (int r = 0; r < rows.Length; r++)
                            {
                                rows[r]["clicktimes"] = (Int32)rows[r]["clicktimes"] + 1;
                            }
                            //更新数据库的数据,将已刷次数更新
                            string SqlUpdNeed = string.Format("update  guideworld set  clicktimes=clicktimes+1 where  guideid='{0}'", drs["guideid"]);
                            SqlHelper.ExecuteNonQuery(conStr, CommandType.Text, SqlUpdNeed);
                        }
                    }
                    //执行切换IP
                    //或则执行重新拨号
                    UpdNeed();
                    AsynRun(Worles);
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值