如何在不使用while 1和if的情况下从sqlite3获取数据

时间:2015-08-03 07:56:19

标签: c++ sqlite

我目前正在使用这种从sqlite3数据库中获取数据的方法:

while(1){
   rc = sqlite3_step(stmt);
   if(rc == SQLITE_ROW){
       ...
   }
   else if(rc == SQLITE_DONE){
       break;
   }
}

我不喜欢这个是if else构造,在这里看起来相当笨拙。此外,每个人都知道if else是邪恶的。因此,可能还有另一种从sqlite获取数据的方法,例如:

while(sqlite3_step(stmt)){
   ...
}

或者,可能有一种获取方法或类似的东西。

我只是想知道其他人在现实世界的项目中做了什么。

1 个答案:

答案 0 :(得分:1)

这样的事情应该可以胜任,但是一定要在退出循环后检查错误。

while((rc = sqlite3_step(stmt)) == SQLITE_ROW)
{
...
}

编辑:请注意,这并不能说明数据库是否繁忙,但您可以在循环后使用条件goto或在{{1}时继续使用外部循环来解决此问题。它不等于rc