2012-03-10 5 views
2

J'ai un problème avec l'insertion et la récupération du codeinsérer dans SQLite

Il n'y a pas d'erreur de temps d'exécution, mais l'insertion de données ne fonctionne pas et le code de récupération ne récupère que le dernier enregistrement de la DB.

Vaut-il mieux utiliser NSString ou NSMutableString?

NSLog(@"test"); 

NSString *sql1 = [NSString stringWithFormat:@"INSERT INTO User Values (2,'%@','','F','123','','','','','A','B','123','123',2)",name.text]; 

char *err; 
sqlite3_exec(database, [sql1 UTF8String], NULL, NULL, &err)!= SQLITE_OK ; 
const char *sql = "select * from User"; 

     sqlite3_stmt *searchStatement; 
     if (sqlite3_prepare_v2(database, sql, -1, &searchStatement, NULL) == SQLITE_OK) 
     { 

      while (sqlite3_step(searchStatement) == SQLITE_ROW) 
      { 


       char * try = (char*)sqlite3_column_text(searchStatement, 1); 
       if (try){ 
       item = [NSMutableString stringWithUTF8String:try]; 

       } 
       else{ 

       item = @""; 
       } 

Répondre

1

Le problème semble être dans votre code de récupération. Les méthodes sqlite3_column_type utilisent l'indexation à base zéro, mais il semble que vous partiez de la position 1. Ainsi, chaque fois que vous franchissez le pas, vous ne sortez pas les informations dont vous avez besoin. Je ne suis pas sûr de savoir pourquoi vous obtenez le dernier élément, mais essayez d'aller de la position 0 et voir si cela aide.