2013-01-24 33 views
1

我需要分配一個二維字符串數組來返回查詢結果給調用者。該查詢可能是這樣的如何填充2D字符串數組中的記錄,因爲在調用sqlite3_step()之前沒有記錄數?

Select * from files where size > x 

二維數組,我需要分配的是一樣的東西

std::string [x][y]; 

我知道的列數,但ofcourse我不知道有多少行匹配查詢。我必須事先分配內存來放置結果集。

我知道我可以執行一個單獨的查詢,但這是一個矯枉過正的問題,應該不需要執行一個單獨的查詢。

select count(*) from files where size > x 

也許我可以重新思考更動態的二維數據結構來推動結果?我不確定有什麼想法?

+0

您是否在提取之前詢問如何知道結果數量?還是你問如何分配空間來保存任意數量的結果?你使用C還是C++? –

+0

C++,但sqlite是C api。回答任何問題都可以幫助,要麼知道行數動態分配內存行 – Ahmed

回答

1

爲什麼不使用std::vector < std::vector <std::string> >?那個可以動態增長,行數可以通過vector.size()輕鬆檢查。

根據您執行查詢的方式,sqlite會告訴您返回的行數。例如,請參閱sqlite_get_table()http://www.sqlite.org/c3ref/free_table.html。它返回*pnRow中的行數。

+0

你是對的..我認爲sqlite會提供一些方法來給我們匹配的行數 – Ahmed

+0

sqlite_get_table()是傳統的接口,不建議按照每個文檔,我在此頁面上提供了uisng建議http://www.sqlite.org/cintro.html – Ahmed

相關問題