2012-01-12 12 views
0

私は指定されたメインカテゴリIDに基づいてサブカテゴリを取得するメソッドを実行しました。sqliteはレコードを1つだけ返します

このメソッドを実行すると、1つのレコードしか取得されません。私はコントロールが

while(sqlite3_step(selectstmt) == SQLITE_ROW) 

whileループに来ることを意味します。

SQLブラウザに同じクエリを実行すると、それが正常に動作し、機能

を実行している場合、これは動作していない理由をexpected.Iとして結果が分からないフェッチ問題がオーバーにあるものを、私に知らせてください。返信用

- (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
- (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;   
} 
+0

おかげで以下のコードは...私のコード – user198725878

+0

における問題は、それが働いている何ですか?か否か? – Anand

+0

は動作していません。これは1レコードしか返さない – user198725878

関連する問題