2011-05-10 72 views
0

while(sqlite3_step(statement)== SQLITE_ROW)循环没有执行任何人都可以帮忙吗?while(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

你能告诉更多的代码? – 2011-05-10 05:32:19

回答

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 2011-05-11 07:39:54

+0

现在尝试更新我的Ans,并让我知道最新的NSLog for sqlite3_errmsg。 – 2011-05-11 08:31:16

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合适。并有一些愚蠢的错误。 – 2011-05-10 05:58:40