我在C#中有一个程序,它与数据库一样:
while(record found)
{
SPEAKS RECORD OUT TO SPEAKER
DELETES RECORD
}
在记录用完之前一切正常。
我想要的是即使在数据库中找不到记录之后也要继续扫描。 当记录出现时,它应该执行逻辑。如何刷新数据库以便扫描新记录?
有什么想法吗?
答案 0 :(得分: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
}
}
所以你的程序不会永远尝试。
答案 1 :(得分:2)
从您的伪代码看起来您运行了一个执行SELECT的ADO命令。您将在命令运行时迭代这些结果。它不是一个易变的数据结构。
因此,您再次运行SELECT命令以查看自上次运行SELECT以来是否有任何新记录出现。