2015-04-03 16 views
1

這更像是一個設計級別的問題。我有一個通過SQL查詢查詢從數據庫記錄,並通過所謂的GetNext()成員函數返回給調用者一個持久化類,函數的簽名如下:GetFirst和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()調用中知道這是第一個調用(其中沒有數據意味着查詢沒有結果),並且這是非循環內的第一個調用,其中沒有數據意味着查詢沒有更多的結果可以顯示,這很好,因此不會顯示「找不到數據」。

對此提出建議?

回答

1

我會把bool firstCall初始化爲true作爲您班級的成員。在getNext()的末尾,您可以將firstCall設置爲false。所以對於所有連續調用getNext()都是錯誤的。

您現在可以根據firstCall值顯示正確的輸出。

當執行新的查詢時,firstCall必須重置爲false