我怎么能改变记录(如从"真"到"假")在SQL数据库的特定行后恰好24小时?
这取决于您正在开发的应用程序的类型,并假设该应用程序一直在运行。例如,如果这是一个web应用程序(ASP.NET),这绝对是一个非常糟糕的主意,因为你不能依赖于你的应用程序是否在未来指定的时间仍在运行,或者它可能被IIS停止。
在桌面应用程序中,您可以start a timer
并在回调中执行db更新。另一种可能性是使用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
);
根据您的需要有不同的选择。这里有一些可以帮助你选择:
- SQL Server代理(不包含在Express Edition中)
- 使用任务调度程序和批处理文件
- Quartz .NET (http://quartznet.sourceforge.net/)
- PowerShell
关于#2,你可以在这里找到信息:http://social.msdn.microsoft.com/forums/en us/sqlgetstarted/thread/7e00c796 - 5854 - 4 - a2c - 91 - d3 - 7 - b325420fd14/
和一个有趣的工具来生成SQL批处理文件:http://www.codeproject.com/Articles/12203/Generating-osql-Batch-Scripts
注意,如果你必须在你的应用程序中做,使用#3或Darin的建议
你不应该这样做。最好是布尔时间限制,然后在你的应用程序中检查过期。