由于公司的新接得项目要实现一批数据的同步,通过外围厂商提供的一系列各个系统的webervices接口定时将数据同步到我们开发的共享平台上,由于厂商系统的数据是不断在变化以及各系统闲忙时的特点,所以定时同步任务的执行必须在时间上能够动态配置。因此,我们需要动态的从数据库中获取配置信息,以改变各个定时间的执行规则,废话不说了,上代码:(我利用的是ssh框架直接写的,框架搭建不再叙述)
1创建数据表(我用的是MySQL)
[sql] view plain copy
DROP TABLE IF EXISTS `t_wsdoc`;
CREATE TABLE `t_wsdoc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`triggername` varchar(50) NOT NULL,
`jobdetailname` varchar(50) N
简单实现的话,就启动一个线程,用一个死循环扩起来,然后用sleep去延时,取出的变量可以放在一个全局变量里,通过<%=Threaddbnum%>显示;也可以以写入字符文件,在页面上include就行,
public static int dbnum;
public xxMethod(){
while(true) {
dbnum = selectFromDB();
Threadsleep(1601000) ; //1ms 60 1000 = 1分钟
}
}
Anllen,这样做是不科学的,如果是定时发送你可以考虑使用sql server中的计划,他可以定义执行某些任务,同时在sql server 2005以后还加入机器空闲时执行等等,而且还是可在失败时重试(重试次数自己设置),还可以对部分成功时进行记录等等。
如果是要求立即执行或是其他不能指执行条件时,可以考虑sql server 2005之后的server broker,这种机制较为安全。同时因为使用queue的原因,使消息只到达一次而不会重复,解决实际工作中的数据库与程序间的异步传输问题。
既然有这么多好的方案为什么还考虑重复地循环地查询数据库呢——你的数据库效率被拉的很慢的,别忘记了还是许多锁机制,会导致SQL server不再及时响应外部请求的!
参照语法
创建事件(CREATE EVENT)语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
DO sql_statement
这里可以是insert语句,也可以是调用一个存储过程。
以上就是关于如何实现一个定时任务来对数据库中的数据进行 *** 作全部的内容,包括:如何实现一个定时任务来对数据库中的数据进行 *** 作、如何在web服务定时查询数据库,并返回更新的值、C# 定时查询SQLServer数据库,并且将查询到的数据循环发送。请给个代码案例谢谢~ 网站的引用也可以。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)