sqlite возвращает только одну запись - PullRequest
0 голосов
/ 12 января 2012

Я выполнил метод извлечения подкатегорий на основе заданного идентификатора основной категории.

При запуске этого метода он извлекает только одну запись.Я имею в виду, что элемент управления заходит в цикл

while(sqlite3_step(selectstmt) == SQLITE_ROW)

while только один раз.

При выполнении того же запроса в браузере SQL он работает нормально и получает результаты, как и ожидалось. Я неНе знаю, почему это не работает при запуске функции

Пожалуйста, дайте мне знать, в чем проблема заключается в коде ниже

- ( NSMutableDictionary * ) getDataToDisplayTierTwo:(NSString*)dbPath:(NSString*)iD{        
    NSMutableDictionary *aTierTwoData = [[NSMutableDictionary alloc]init];
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
    {
        NSString *selectSQL = [NSString stringWithFormat: @"select * from sub_categories_reference scr inner join sub_categories ssc on ssc.id = scr.sub_category_id where  scr.main_category_id = %@ ",iD];    
        const char *sql_query_stmt = [selectSQL UTF8String];            
        sqlite3_stmt *selectstmt;           
        if(sqlite3_prepare_v2(database, sql_query_stmt, -1, &selectstmt, NULL) == SQLITE_OK) 
        {               
            while(sqlite3_step(selectstmt) == SQLITE_ROW) 
            {
                NSLog(@"coming insode");
                NSString *aValue = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(selectstmt, 6)];                 
                NSString *aId = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(selectstmt, 5)];                    
                [aTierTwoData setObject:aId forKey:aValue];
                [aValue release];
                [aId release];                  
                NSLog(@"%@ %@ ^^^^^^^^picker value id ", aValue, aId);
            }
        }
    }   
    else{
        //Even though the open call failed, close the database connection to 
        sqlite3_close(database); 
    }        
    return aTierTwoData;        
}

1 Ответ

1 голос
/ 12 января 2012
- ( NSMutableArray * ) getDataToDisplayTierTwo:(NSString*)dbPath:(NSString*)iD{ 

NSMutableDictionary *aTierTwoData = [[NSMutableDictionary alloc]init];

NSMutableArray *aTierArray = [[NSMutableArray alloc]init];

if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 

{
    NSString *selectSQL = [NSString stringWithFormat: @"select * from sub_categories_reference scr inner join sub_categories ssc on ssc.id = scr.sub_category_id where  scr.main_category_id = %@ ",iD];    
    const char *sql_query_stmt = [selectSQL UTF8String];            
    sqlite3_stmt *selectstmt;           
    if(sqlite3_prepare_v2(database, sql_query_stmt, -1, &selectstmt, NULL) == SQLITE_OK) 
    {               
        while(sqlite3_step(selectstmt) == SQLITE_ROW) 
        {
            NSLog(@"coming insode");
            NSString *aValue = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(selectstmt, 6)];                 
            NSString *aId = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(selectstmt, 5)]; 

             NSLog(@"%@ %@ ^^^^^^^^picker value id ", aValue, aId);                   
            [aTierTwoData setObject:aId forKey:aValue];
            [aValue release];
            [aId release];         

            [aTierArray addObject:aTierTwoData];   


             aTierTwoData = nil;

        }
    }
}   

else{
    //Even though the open call failed, close the database connection to 
    sqlite3_close(database); 
}        
return aTierArray;        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...