首页 新闻 会员 周边

怎样用Windows服务实现自动检查数据库中的数据

0
[已关闭问题]

由于本人现在在做项目(客户关系管理系统)时,遇到了一个难点:

项目要求是系统每周一的凌晨2:00自动检测距当前时间的6个月没有下订单的客户头,如果找到了则自动添加一条流失记录到客户流失表里面(表示客户将要流失),在用户登录系统后就可以看到将要流失的客户。

用户登录系统后可以对将要流失的记录采取措施。。我当时并不知道怎样来实现这个功能。。

后来才想起来,可以用Windows服务来实现。因为Windows服务是自动运行的,不需要用户去启动!

我写了一个Windows服务,设置Timer控件每隔一分钟触发一次。到数据库中检测有没有客户在距当前时间的前6个月没有下订单的客户(得到客户的最后一次下单时间和距当前时间的前6个月做比软)如果最后一次下单时间小于距当前时间的前6个月时间,则证明客户已有6个月没有下单了。那么我就执行一条添加的SQL语句,(往流失记录表里插入一打数据),可是到数据库中看时并没有自动添加数据到流失表里。所以在这里想问一下各位:有没有什么办法可以实现!谢谢了!!!

 此项目是用ASP.NET(C#)完成的

刘天雄的主页 刘天雄 | 初学一级 | 园豆:200
提问于:2008-12-18 14:49
< >
分享
其他回答(3)
0

1、Windows服务好方法,除了此方法还可以使用SQL Server的作业或者Windows的计划任务。

2、至于为何没有插入数据,那不用问肯定是SQL没有被执行(首先您要保证SQL语句的正确性,即在SQL Server的查询分析器中是可以运行成功的,如果这个都保证不了,那么SQL语句有问题了)。

3、建议您为您的Windows服务建立一个文本日志,而且在关键步骤上需要去将成功或失败的过程写入此日志,比如将下列过程使用try语句写入日志:连接数据库、发送SQL语句到数据库执行、以及其他功能操作,如果成功,在日志中写入“某某操作成功”(也可不写入成功信息),如果失败写上“某某操作失败!失败原因:×××。”,失败原因就是try语句的报错的ex消息体,当然必须为每步操作加上日期(根据情况,一般需要精确到秒)。写日志后您就能发现到底是哪里出错了,是Windows服务开发本身的逻辑错误还是代码错误还是SQL语句的错误等等。

4、SQL语句建议使用存储过程。

5、据我了解Windows服务是不需要使用Timer控件的来控制的,您是用Timer控件控制访问数据库的时间间隔嘛?建议您一步步开发,就和穿衣服一样一件衣服穿好了再穿另外一件,明白我的意思吗?找问题的Bug也是和脱衣服一样,一件衣服脱完了再脱另外一件!有关具体Windows服务的开发可以看看我博客中的这篇文章《一个有用的Windows服务小程序——用来完成Server端的Socket通信》,虽然是在VS.NET2003下开发的Windows服务,但大同小异,希望能在Windows服务方面对您有所启发。

另外说明:Windows服务是C/S架构程序,跟您项目本身使用Asp.Net C#(即B/S架构程序)没有直接关系,只是两个用的是同一个数据库而已(即操作的数据相同),其他互不往来也不影响,且您开发的这个Windows服务是要安装在服务器上,而不是客户端上。

刚刚 | 园豆:3151 (老鸟四级) | 2008-12-18 15:09
0

学习了

码尔代夫iimax | 园豆:3138 (老鸟四级) | 2008-12-18 16:10
0

使用数据库的作业实现不了你的功能吗?为什么一定要用服务,还要单独注册

Ferry | 园豆:210 (菜鸟二级) | 2008-12-18 16:41
0

quartz.net

wingoo | 园豆:1513 (小虾三级) | 2008-12-18 19:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册