2014-11-06 60 views
1

我想獲取插入到sqlite數據庫中的所有記錄:Favorite table。我寫了下面的代碼:從數據庫中獲取所有記錄。 它給我的記錄,但第一條記錄沒有顯示...iOS Sqlite數據庫不顯示第一條記錄

例如:如果表有3條記錄 它給我只有2條記錄第一條記錄丟失。 當我使用SQLite經理它顯示我正確的3條記錄執行查詢..

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    { 
     // Setup the SQL Statement and compile it for faster access 
     NSString *sqlStatement = @"SELECT * FROM Favorite ;"; 
     sqlite3_stmt *compiledStatement; 
     NSLog(@"Database returned error %d: %s", sqlite3_errcode(database), sqlite3_errmsg(database)); 

     if(sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 

      NSLog(@"srow==%d",sqlite3_step(compiledStatement)); 

      while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
      { 


       // title 
       NSString *fti=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement,0)]; 

       NSString * ftitle = [[NSString alloc]initWithFormat:@"%@",fti]; 
       [app.favdbTitle addObject:ftitle]; 
       NSLog(@"ttile==%@",ftitle); 

       //desc 
       NSString *fdes=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement,1)]; 

       NSString * fdesc = [[NSString alloc]initWithFormat:@"%@",fdes]; 
       [app.favdbDec addObject:fdesc]; 


       int favno=sqlite3_column_int(compiledStatement, 2); 
       NSInteger fvno=favno; 
       [app.favdbid addObject:[NSString stringWithFormat:@"%ld", (long)fvno]]; 

       //cat 1 
       NSString *fca1=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement,3)]; 

       NSString * fcate1 = [[NSString alloc]initWithFormat:@"%@",fca1]; 
       [app.favcat1 addObject:fcate1]; 

       //cat 2 
       NSString *fca2=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement,4)]; 

       NSString * fcate2 = [[NSString alloc]initWithFormat:@"%@",fca2]; 
       [app.favcat2 addObject:fcate2]; 

       //cat 2 
       NSString *fca3=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement,5)]; 

       NSString * fcate3 = [[NSString alloc]initWithFormat:@"%@",fca3]; 
       [app.favcat3 addObject:fcate3]; 







      } 

     } 
     // Release the compiled statement from memory 
     sqlite3_finalize(compiledStatement); 

    } 
    sqlite3_close(database); 
+0

@trojanfoe謝謝,是工作在自定義對象 – Amitkumar 2014-11-06 07:24:27

回答

1

的問題是,你的while循環之前,你有一個NSLog正在調用sqlite3_step了。因此,這個NSLog將檢索第一條記錄,並且while循環將在第二條記錄處拾取。

只需刪除NSLogsqlite3_step電話,你應該沒問題。

+0

其工作謝謝... – Amitkumar 2014-11-06 07:53:37