我在C#程序,像這樣的作品與數據庫:掃描一個新的記錄在數據庫中
while(record found)
{
SPEAKS RECORD OUT TO SPEAKER
DELETES RECORD
}
它,直到它運行的記錄工作正常。
我想要的是即使在數據庫中沒有找到記錄後仍然繼續掃描。 當一條記錄出現時,它應該執行邏輯。如何刷新數據庫以便掃描新記錄?
任何想法?
我在C#程序,像這樣的作品與數據庫:掃描一個新的記錄在數據庫中
while(record found)
{
SPEAKS RECORD OUT TO SPEAKER
DELETES RECORD
}
它,直到它運行的記錄工作正常。
我想要的是即使在數據庫中沒有找到記錄後仍然繼續掃描。 當一條記錄出現時,它應該執行邏輯。如何刷新數據庫以便掃描新記錄?
任何想法?
您可能需要等一段時間才能檢查新記錄。所以永遠迭代並檢查新記錄。如果有,請照常進行。如果你有沒有記錄,等待(例如2秒),然後再試一次
while(true){
if(record found){
// SPEAKS RECORD OUT TO SPEAKER
// DELETES RECORD
}else{
System.Threading.Thread.Sleep(2000); // sleep two seconds
}
}
如果不請求之間的等待時間,那麼你會遇到的問題進行了新的紀錄不斷詢問。
另一個問題是「迭代永遠」部分。通常情況下,你做什麼,是不是永遠重複,但限制了連續嘗試的次數您對閱讀的新紀錄:
int attempts = 0;
while(attempts < 3){
attempt++;
if(record found){
// SPEAKS RECORD OUT TO SPEAKER
// DELETES RECORD
attempts=0; // reset attempts counter
}else{
System.Threading.Thread.Sleep(2000); // sleep two seconds
}
}
所以,你的程序將不會永遠努力。
實際上我使用的是服務,所以我希望它永遠運行。 – Apollo 2013-04-22 17:00:05
@Apollo那麼你可以用'while(true)'去。另一種選擇是讓您的服務等待有新的記錄可用的信號。 – 2013-04-22 17:05:40
從你的僞代碼看起來你運行了一個做了SELECT的ADO命令。您將按照命令運行時的這些結果進行迭代。它不是一個易變的數據結構。
因此,您需要再次運行SELECT命令,以查看自上次運行SELECT以來是否出現了任何新記錄。
您需要實施某種輪詢解決方案,或者在您的數據庫中編寫一個可執行外部代碼的觸發器,以便您可以處理記錄插入。 – 2013-04-22 16:45:29
「刷新數據庫」是什麼意思? – 2013-04-22 16:53:16