2013-03-17 89 views
-4

如何在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

回答

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 
); 
+0

這應該是ASP.NET網站的一部分,我想修改某些記錄特定的數據庫行從「打開」到「關閉」正好24小時從這一行插入。從上面的最佳方法是什麼?感謝所有人, – walter 2013-03-17 10:06:31

+0

。我會嘗試。 – walter 2013-03-18 06:11:07

0

有根據您的需要是什麼不同的選擇。這裏有一些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

0

你不應該這樣做。最好是具有布爾時間限制,然後檢查應用程序中的過期時間。