C#在24小时后在SQL数据库中更改记录

问题描述:

如何在24小时后更改SQL数据库特定行中的记录(如从“true”到“False”)?C#在24小时后在SQL数据库中更改记录

+1

http://stackoverflow.com/questions/14007572/delete-record-24-hours-after-insert – 2013-03-17 09:40:17

+6

你到目前为止尝试过什么?先显示你的努力..请阅读[常见问题]和[问] – 2013-03-17 09:42:04

+1

有没有这样的事情** ** SQL数据库**; SQL只是结构化查询语言 - 许多数据库系统使用的语言,但它不是**数据库产品......类似这样的东西通常是特定于供应商的 - 所以我们真的需要知道**什么数据库系统**(和哪个版本)你使用.... – 2013-03-17 10:05:07

这取决于您正在开发的应用程序的类型,并假定此应用程序正在不断运行。例如,如果这是一个Web应用程序(ASP.NET),这绝对是一个非常糟糕的主意,因为您不能依赖于您的应用程序是否仍将在指定时间运行的事实,或者它可能会被IIS停止。

在桌面应用程序中,您可以使用start a timer并在回调中执行数据库更新。另一种可能性是使用RegisterWaitForSingleObject方法:

ThreadPool.RegisterWaitForSingleObject(
    new AutoResetEvent(false), 
    (state, timedOut) => 
    { 
     // this callback will execute 24 hours later 
     // here you could perform your database update 
    }, 
    null, 
    TimeSpan.FromHours(24), 
    true 
); 
+0

这应该是ASP.NET网站的一部分,我想修改某些记录特定的数据库行从“打开”到“关闭”正好24小时从这一行插入。从上面的最佳方法是什么?感谢所有人, – walter 2013-03-17 10:06:31

+0

。我会尝试。 – walter 2013-03-18 06:11:07

有根据您的需要是什么不同的选择。这里有一些HEP您选择:

  1. SQL Server代理(不包括在易捷版)
  2. 使用任务计划程序和批处理文件。
  3. 石英.NET(http://quartznet.sourceforge.net/
  4. PowerShell的

#2,你可以找到的信息在这里: http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/7e00c796-5854-4a2c-91d3-7b325420fd14/

,并生成SQL批处理文件在这里一个有趣的工具: http://www.codeproject.com/Articles/12203/Generating-osql-Batch-Scripts

请注意,如果您必须在您的应用内执行此操作,请使用#3或Darin的建议

+0

这应该是ASP.NET网站的一部分,我想修改一些记录从该行插入完全24小时后从“打开”到“关闭”数据库的特定行。什么是从以上? – walter 2013-03-17 10:03:52

+0

@walter使用Quartz.NET,如果可能的话,我建议将它放入一个Wi​​ndows服务。但是,如果它必须从ASP.NET应用程序完成,然后看看保持您的网站活着。一种方法是修改IIS来执行此操作。请参阅此处:http://technet.microsoft.com/en-us/library/cc772183%28v=ws.10%29.aspx。 – Matt 2013-03-17 12:25:28

+0

@walter其实,再想一想,如果可以的话,我可能会选择SQL Server代理作业。您可以安排一项工作,每隔一小时或每一天(或任何您想要的时间)检查表格,并查看每行,看看它何时插入。如果它等于“现在 - 24小时”,则将其设置为“关闭” – Matt 2013-03-17 12:32:16

你不应该这样做。最好是具有布尔时间限制,然后检查应用程序中的过期时间。