à ce code, je suis en train d'obtenir instruction SQL CREATE de sqlite_master pour une table spécifique:changement étrange * omble chevalier sqlite3_step (déclaration)
[SQLStatement setString: @ "SELECT name, sql DE sqlite_master OU type = 'table' ET nom = '"];
[SQLStatement appendString: tableName]; [SQLStatement appendString: @ "'"];
int dbrc;
const char *charSQLStatement = [SQLStatement UTF8String];
sqlite3_stmt *statement = nil;
dbrc = sqlite3_prepare_v2 (dbHandleSQLite, charSQLStatement, -1, &statement, NULL);
const char *nameColumn,*sqlColumn;
dbrc = sqlite3_step (statement);
NSString *tempString;
do {
nameColumn = sqlite3_column_text(statement,0);
sqlColumn = sqlite3_column_text(statement,1);
NSLog(@"%s",nameColumn);
NSLog(@"%s",sqlColumn);
tempString = [NSString stringWithCString:sqlColumn encoding:NSASCIIStringEncoding];
} while (sqlite3_step(statement) == SQLITE_ROW);
sqlite3_finalize (statement);
NSLog(@"%s",nameColumn);
NSLog(@"%s",sqlColumn);
La boucle do-while est exécutée une seule fois. Vous pouvez voir, que j'ai fait une petite contournement pour obtenir cette valeur travaillée et assignée à tempString. Raison est que si sqlite3_step (instruction) est à nouveau exécuté, nameColumn et sqlColumn changent leurs valeurs bien qu'ils ne soient pas appelés à nouveau ?? !! NameColumn reçoit le nom de la table et sqlColumn reçoit l'instruction "CREATE TABLE ...", ce qui est OK.
Mais lorsque le programme arrive à expiration, nameColumn passe à "index" et sqlColumn à quelque chose de non compréhensible, bien que loop ne soit pas répété.
Comment cela est-il possible? Qu'est-ce que je fais mal?
Merci! Cela le rend clair. – mbpro
Vous devriez probablement accepter la réponse pour fermer la question. :) –