C#在24小时后在SQL数据库中更改记录
这取决于您正在开发的应用程序的类型,并假定此应用程序正在不断运行。例如,如果这是一个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
);
有根据您的需要是什么不同的选择。这里有一些HEP您选择:
- SQL Server代理(不包括在易捷版)
- 使用任务计划程序和批处理文件。
- 石英.NET(http://quartznet.sourceforge.net/)
- 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的建议
这应该是ASP.NET网站的一部分,我想修改一些记录从该行插入完全24小时后从“打开”到“关闭”数据库的特定行。什么是从以上? – walter 2013-03-17 10:03:52
@walter使用Quartz.NET,如果可能的话,我建议将它放入一个Windows服务。但是,如果它必须从ASP.NET应用程序完成,然后看看保持您的网站活着。一种方法是修改IIS来执行此操作。请参阅此处:http://technet.microsoft.com/en-us/library/cc772183%28v=ws.10%29.aspx。 – Matt 2013-03-17 12:25:28
@walter其实,再想一想,如果可以的话,我可能会选择SQL Server代理作业。您可以安排一项工作,每隔一小时或每一天(或任何您想要的时间)检查表格,并查看每行,看看它何时插入。如果它等于“现在 - 24小时”,则将其设置为“关闭” – Matt 2013-03-17 12:32:16
你不应该这样做。最好是具有布尔时间限制,然后检查应用程序中的过期时间。
http://stackoverflow.com/questions/14007572/delete-record-24-hours-after-insert – 2013-03-17 09:40:17
你到目前为止尝试过什么?先显示你的努力..请阅读[常见问题]和[问] – 2013-03-17 09:42:04
有没有这样的事情** ** SQL数据库**; SQL只是结构化查询语言 - 许多数据库系统使用的语言,但它不是**数据库产品......类似这样的东西通常是特定于供应商的 - 所以我们真的需要知道**什么数据库系统**(和哪个版本)你使用.... – 2013-03-17 10:05:07