1

我在 C# 中有一个程序,它可以像这样与数据库一起工作:

while(record found)
{
   SPEAKS RECORD OUT TO SPEAKER
   DELETES RECORD
}

它工作正常,直到它用完记录。

我想要的是即使在数据库中没有找到记录后也继续扫描。当记录出现​​时,它应该执行逻辑。如何刷新数据库以便扫描新记录?

有任何想法吗?

4

2 回答 2

4

在检查新记录之前,您可能需要等待一段时间。所以永远迭代并检查新记录。如果你有,照常进行。如果您没有记录,请等待(例如 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
    }
}

所以你的程序不会永远尝试。

于 2013-04-22T16:45:11.007 回答
2

从您的伪代码看来,您运行了一个执行 SELECT 的 ADO 命令。您将像运行命令时一样迭代这些结果。它不是易失的数据结构。

因此,您将再次运行 SELECT 命令以查看自上次运行 SELECT 以来是否出现了任何新记录。

于 2013-04-22T16:45:33.153 回答