如何在 24 小时后更改 SQL 数据库特定行中的记录(如从“true”到“False”)?
问问题
806 次
3 回答
2
这将取决于您正在开发的应用程序的类型,并假设此应用程序一直在运行。例如,如果这是一个 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
);
于 2013-03-17T09:42:44.307 回答
1
根据您的需求,有不同的选择。这里有一些可以帮助您选择:
- SQL Server 代理(不包含在 Express Edition 中)
- 使用任务计划程序和批处理文件。
- 石英 .NET ( http://quartznet.sourceforge.net/ )
- 电源外壳
对于 #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 的建议
于 2013-03-17T09:49:44.120 回答
0
你不应该这样做。最好有布尔时间限制,然后在您的应用程序中检查过期。
于 2013-03-17T10:50:14.570 回答