2011-05-10 2 views
0

while (sqlite3_step (statement) == SQLITE_ROW) 루프가 실행되고 있지 않습니다. 아무도 도와 드릴 수 있습니까?(sqlite3_step (statement) == SQLITE_ROW) 실행되지 않았습니까?

NSLog(@" %d, %d ",sqlite3_step(statement),SQLITE_ROW); 출력은 항상 다음 21 100

sqlite3_stmt *statement; 
    sqlite3 *database; 
if (sqlite3_open("myDB.sql", &database) == SQLITE_OK) { 
    NSLog(@"1 %d",SQLITE_OK); 
NSLog(@" %d, %d ",sqlite3_step(statement),SQLITE_ROW);  
     const char *sql = "SELECT myName FROM myTable"; 
     if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) { 
      while (sqlite3_step(statement) == SQLITE_ROW) { 
       int primaryKey = sqlite3_column_int(statement, 0); 

      } 
     } 

     if (statement) { 
      sqlite3_finalize(statement); 
     } 
    } 
+0

당신은 좀 더 코드를 게재 할 수 있습니까? –

답변

1
Try This, 



sqlite3_stmt *statement; 
     sqlite3 *database; 
     NSString *sqLiteDb = [[NSBundle mainBundle] pathForResource:@"myDB" 
       ofType:@"sql"]; 

      if (sqlite3_open([sqLiteDb UTF8String], &database) != SQLITE_OK) { 
       NSLog(@"Failed to open database!"); 
      } 
      NSLog(@" %d, %d ",sqlite3_step(statement),SQLITE_ROW);  
      const char *sql = "SELECT myName FROM myTable"; 
      if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) { 
       while (sqlite3_step(statement) == SQLITE_ROW) { 
        int primaryKey = sqlite3_column_int(statement, 0); 

       } 
      } 
      else { 
       sqlite3_close(database); 
       NSLog(@"Failed to open database with message '%s'.", sqlite3_errmsg(database)); 
      } 

      if (statement) { 
       sqlite3_finalize(statement); 
      } 
     } 

참조 일부 링크이다.

+0

여전히 작동하지 않습니다. 동일한 문제가 계속 발생합니다. – hemant

+0

이제 업데이트 된 Ans를 시험해보고 NSLog에서 sqlite3_errmsg에 대한 결과를 알려주십시오. –

0
sqlite3 *database; 

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    { 
    NSString *sqlStatement = [NSString stringWithFormat:@""SELECT myName FROM myTable"]; 
     sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding],-1,&compiledStatement, NULL) == SQLITE_OK) 
     { 
      NSLog(@"%@",sqlStatement); 

      if (sqlite3_step(compiledStatement) == SQLITE_ROW) 
      { 
int primaryKey = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0)]intValue] ; 
      }  
     } 
     sqlite3_finalize(compiledStatement); 

     sqlite3_close(database); 
    }  
+0

당신 ans의 적절한 formate을 확인하십시오. 그리고 바보 같은 실수를 저 지르십시오. –