C#实现定时更新数据库的任务

本文介绍使用C#实现每天定时更新钉钉考勤数据的方法,通过设定定时任务在指定时间执行更新操作,确保数据同步。文章分享了具体代码实现及注意事项,强调了事务提交的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#实现定时更新数据库的任务

开发需要实现每天定时更新钉钉考勤的功能,上网搜到了这篇文章,顺便写一些自己的见解

代码

       //在构造方法中,调用设置任务的函数。这个可以根据自己的代码选择位置放
       public DingAttenceController()
        {
            setTaskAtFixedTime();
        }
       //设置定时任务 
       private void setTaskAtFixedTime()
         {
            DateTime now = DateTime.Now;
            //8.3的解释 8是八个小时,0.3指的是 60*0.3 = 18分钟。在这天的8点18分执行。
            DateTime oneOClock = DateTime.Today.AddHours(8.3);         
            if (now > oneOClock)
            {
                //时间加一天,明天再次执行
                oneOClock = oneOClock.AddDays(1);
            }
            int msUntilFour = (int)((oneOClock - now).TotalMilliseconds);

            var t = new System.Threading.Timer(doAt1AM);
            t.Change(msUntilFour, Timeout.Infinite);
        }

        //要执行的任务
        private void doAt1AM(object state)
        {
            //执行功能...,这里每个人都不一样
            DownLoadDingattence();
            //再次设定(递归调用)
            setTaskAtFixedTime();
        }

要注意,如果在定时任务中对数据库进行了增加等操作,要提交事务才可以保证数据库中进行了更改。我有好几次都是insert语句执行了,但是数据库中并没有任何改变。id的值却增加了,后来我经过一天的检查加询问,才发现这个问题。

   ts.Complete(); //一句话费一天     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值