如何从SQLite读取一列并存储在Array中

时间:2013-05-29 11:32:14

标签: ios objective-c sqlite

我有一个SQLite数据库,其中有5列名为:NameIDChildIDParentIDBrotherID

在这个数据库中我有很多记录,我想在数组中存储所有列值之一并返回该数组。例如,我想在ParentID列中获取所有值。我使用此查询代码:

Select ParentID from Table1(表1是表名)

这是我从某列获取数组的代码:

/*==================================================================
 METHOD FOR GETTING MIDIFIED FROM DATABASE
 ==================================================================*/
- (NSMutableArray*)readingModified
{
     ModiArray = [[NSMutableArray alloc] init];
    // Setup the database object
    sqlite3 *database2;
    // Open the database from the users filessytem
    if(sqlite3_open([[self DatabaseSqlite] UTF8String], &database2) == SQLITE_OK)
    {
        // Setup the SQL Statement and compile it for faster access
        //SQLIte Statement
        NSString *sqlStatement_userInfo =[NSString stringWithFormat:@"Select ParentID from Table1"];
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database2, [sqlStatement_userInfo UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
        {
            // Loop through the results and add them to the feeds array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW)
            {
                // Init the Data Dictionary
                NSMutableDictionary *_dataDictionary2=[[NSMutableDictionary alloc] init];
                NSString *_recordParentID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
                [_dataDictionary2 setObject:[NSString stringWithFormat:@"%@",_recordModified] forKey:@"ParentID"];
                [array addObject:_dataDictionary2];
            }
        }
        else
        {
            NSLog(@"No Data Found");
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database2);

    return ModiArray;
}

请告诉我我的错误。

2 个答案:

答案 0 :(得分:4)

我的朋友有些小心。

这段代码是正确的,但你错了: [array addObject:_dataDictionary2];

arrayModiArray

/*==================================================================
 METHOD FOR GETTING MIDIFIED FROM DATABASE
 ==================================================================*/
- (NSMutableArray*)readingModified
{
     ModiArray = [[NSMutableArray alloc] init];
    // Setup the database object
    sqlite3 *database2;
    // Open the database from the users filessytem
    if(sqlite3_open([[self DatabaseSqlite] UTF8String], &database2) == SQLITE_OK)
    {
        // Setup the SQL Statement and compile it for faster access
        //SQLIte Statement
        NSString *sqlStatement_userInfo =[NSString stringWithFormat:@"Select ParentID from Table1"];
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database2, [sqlStatement_userInfo UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
        {
            // Loop through the results and add them to the feeds array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW)
            {
                // Init the Data Dictionary
                NSMutableDictionary *_dataDictionary2=[[NSMutableDictionary alloc] init];
                NSString *_recordParentID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
                [_dataDictionary2 setObject:[NSString stringWithFormat:@"%@",_recordModified] forKey:@"ParentID"];
                [ModiArray addObject:_dataDictionary2];
            }
        }
        else
        {
            NSLog(@"No Data Found");
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database2);

    return ModiArray;
}

答案 1 :(得分:2)

您正在将对象添加到array并分配并返回ModiArray