C++ GetFirst和GetNext调用从持久类获取记录
这更像是一个设计层面的问题。我有一个持久类,它通过SQL查询从DB查询记录,并通过名为getNext()的成员函数返回调用方,该函数的签名如下:C++ GetFirst和GetNext调用从持久类获取记录,c++,oop,C++,Oop,这更像是一个设计层面的问题。我有一个持久类,它通过SQL查询从DB查询记录,并通过名为getNext()的成员函数返回调用方,该函数的签名如下: int getNext(); // returns 0 on failure and 1 on success 我没有getFirst()调用。因此,调用方通常运行while循环来获取数据,例如 while (obj.getNext() > 0) { obj.getValues(0; ... } 在getNext()实现中,如果没有数
int getNext(); // returns 0 on failure and 1 on success
我没有getFirst()调用。因此,调用方通常运行while循环来获取数据,例如
while (obj.getNext() > 0) {
obj.getValues(0;
...
}
在getNext()实现中,如果没有数据(第一次调用)或没有更多数据(while循环中的最后一次调用),我在输出中写入“未找到数据”并返回0,否则检索数据并返回1。
在getNext()调用中有没有聪明的方法可以知道这是第一个调用(没有数据意味着查询没有结果),这是循环中的非第一个调用,没有数据意味着查询没有更多的结果要显示,这很好,因此“找不到数据”将不会显示
建议?我会把
bool firstCall
初始化为true
作为你们班的一员。在getNext()
的末尾,您可以将firstCall
设置为false
。因此,对getNext()
的所有后续调用都将为false
现在,您可以根据firstCall
值显示正确的输出
执行新查询时,firstCall
必须重置为false