2014-01-21 23 views
0

我有一個sqlite語句,爲我提供了一個選定的單行和20列。SQLite通過行中的每一列

到現在我一直在使用這個while循環:

while(sqlite3_step(statement) == SQLITE_ROW) { 
    NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, an_incrementing_int)]; 
    ... 
    } 

但是這個問題是因爲只有一個行自然會只返回第1列。

那麼有沒有像while.. == SQLITE_COLUMN

感謝

+0

您認爲'an_incrementing_int'是什麼? –

+0

我有,但因爲while循環只能運行一次。 – userMod2

回答

1

要得到列數的查詢返回,使用sqlite3_column_count

函數返回列數據,sqlite3_column_...都接受第二個參數,即int列索引。

NSString coldata; 
int i; 
while(sqlite3_step(statement) == SQLITE_ROW) { 
    for (i=0; i<sqlite3_column_count(statement); ++i) { 
     coldata= [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, i)]; 
    } 
} 

另請注意:請注意使用數據指針指向列值!

返回的指針是有效的,直到如上所述 發生類型轉換,或直到sqlite3_step()或sqlite3_reset()或 sqlite3_finalize()被調用。用於保存字符串 和BLOB的內存空間會自動釋放。不要將sqlite3_column_blob(),sqlite3_column_text()等返回 的指針傳遞給 sqlite3_free()。

相關問題