使用 sqlite3_step 在数组中输入值

Entering values in the array with sqlite3_step

我有这段代码可以将记录保存在一个数组中:

if (sqlite3_open(dbpath, &myDatabase) == SQLITE_OK) {

NSString *stringTable = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE id = ?",table];

const char *sql = [stringTable UTF8String];

sqlite3_prepare_v2(myDatabase, sql, -1, &statement2, NULL);
sqlite3_bind_int(statement2, 1, value);

while (sqlite3_step(statement2) == SQLITE_ROW){

[arrayValues addObject:((char *)sqlite3_column_text(statement2, 1)) ? [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement2, 1)] : @""];

[arrayValues addObject:((char *)sqlite3_column_text(statement2, 2)) ? [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement2, 2)] : @""];

        ...
        ...

[arrayValues addObject:((char *)sqlite3_column_text(statement2, 21)) ? [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement2, 21)] : @""];

              }
}

我想做的就是找到一种方法来自动执行此代码并让我花很多时间重复输入命令,为此,我尝试创建一个 int 并增加 while:

int temp = 1;//If 0 he get ID and I don't like to get...
...
while (sqlite3_step(statement2) == SQLITE_ROW){

            [arrayValues addObject:((char *)sqlite3_column_text(statement2, temp)) ? [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement2, temp)] : @""];

            temp++;

        }     
    }

但是这个方法return只有一个对象(即第1行),为什么会这样,如何解决这个问题?

把你的循环 放在 里面 while 循环:

while (sqlite3_step(statement2) == SQLITE_ROW){
    for (int temp = 1: temp <= 21; temp++) {
        [arrayValues addObject:((char *)sqlite3_column_text(statement2, temp)) ? [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement2, temp)] : @""];
    }     
}