简化checkbtn方法减少访问db次数

      public static bool checkbtn1()

       {

           using (cDBMysql cdb = new cDBMysql("dbwebConfig.ini", 1))

           {

                if(cdb.ExecuteScalar("select bt_trigger from button_action whereid='1'").ToString() == "1" && cdb.ExecuteScalar("selectavailable from button_action where id='1'").ToString() == "1")

                {

                    cdb.executeSql("updatebutton_action set bt_trigger='0'where id='1'");//清除是否触发数据,在执行方法的时候,每个按钮都要

                    return true;

                }

                else

                    return false;

           }

       }

FAT需要的5个按钮基本上都是这个套路,拿两句selsct语句查找db相应栏位若满足触发条件,先把是否触发置0,然后return一个数值向下执行,不满足就return不能执行的值或者干脆不return。

功能是可以实现,可是短短一个判断要读数据库3次,浪费资源,怎样才能尽可能减少访问次数,我把两句select放在datatable里,用rows[][]来判断,满足条件才进来这个方法。这写在一个每秒跑10次的线程里,不停的刷数据库。代码为

  

     private void ButtonInteraction()//线程每0.1秒执行一次

       {

           while (1 == 1)

           {

 

                DataTable dt1 =aaa.checktable();

                for (int i = 0; i <dt1.Rows.Count; i++)

                {

                    if (dt1.Rows[i]["是否触发"].ToString() =="1" && dt1.Rows[i]["是否禁用"].ToString() == "1")

                    {

                        if (dt1.Rows[i]["按钮名称"].ToString() == "登陆")

                           DengLu(false);//checkbtn36();

                        else if(dt1.Rows[i]["按钮名称"].ToString() == "自检")

                            ZiJian(false);//checkbtn1();

                        else if (dt1.Rows[i]["按钮名称"].ToString() == "启动")

                            QiDong(false);//checkbtn2();

                        else if(dt1.Rows[i]["按钮名称"].ToString() == "调度停止")

                            TingZhi(false);//checkbtn3();

                        else if(dt1.Rows[i]["按钮名称"].ToString() == "手动任务")

                           HandMission(false);// checkbtn35();

                    }

                    else

                        continue;

                }

 

 

 

 

                Thread.Sleep(100);//停0.1秒

 

           }

       }

 

现在方法就很简便了。

      public static bool checkbtn1()

       {

           using (cDBMysql cdb = new cDBMysql("dbwebConfig.ini", 1))

           {

                cdb.executeSql("updatebutton_action set bt_trigger='0'where id='1'");//清除是否触发数据,在执行方法的时候,每个按钮都要

                return true;

           }

       }


猜你喜欢

转载自blog.csdn.net/weixin_31808811/article/details/79595529