C'est le code que j'utilise pour sélectionner des enregistrements de ma base de données. Je lie deux dates dans mon sql, cependant, quand j'arrive à sqlite3_step je reçois SQLITE_DONE où je devrais obtenir SQLITE_ROW. Il semble qu'il traite les liaisons plutôt que d'interroger les données.iPhone, sqlite3, comment transmettre des valeurs dans une instruction select?
Qu'est-ce que je fais mal?
NSString *startDateRangeString = @"2000-05-01";
NSString *endDateRangeString = @"2011-05-01";
sqlite3 *database;
int result = sqlite3_open("mydb.db", &database);
if(result != SQLITE_OK)
{
NSLog(@"Could not open db.");
}
const char *sql = "select pid from tmp where due >= '%@' and due < '%@' order by due, pid;";
sqlite3_stmt *statementTMP;
int error_code = sqlite3_prepare_v2(database, sql, -1, &statementTMP, NULL);
if(error_code == SQLITE_OK) {
sqlite3_bind_text(statementTMP, 1, [startDateRangeString UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statementTMP, 2, [endDateRangeString UTF8String], -1, SQLITE_TRANSIENT);
int step_error_code = sqlite3_step(statementTMP);
while(sqlite3_step(statementTMP) == SQLITE_ROW) // I get 101 aka SQLITE_DONE
{
NSLog(@"Found!!");
}
}
sqlite3_finalize(statementTMP);
sqlite3_close(database);
comment est-ce la bonne réponse? – Pavan
Pavan, ai-je tort quelque part? – kovpas
C'est correct car il a corrigé les paramètres de position. Grr, ma réponse similaire est venu en premier :) –