J'essaie de réutiliser une instruction sqlite dans mon application dans une méthode. Voici le code correspondantPourquoi je reçois sqlite3error?
if(getsets_statement == nil){
const char *sql = "SELECT DISTINCT num,roll FROM mytable WHERE cls like ? and divname like ?";
if(sqlite3_prepare_v2(database, sql, -1, &getsets_statement, NULL) != SQLITE_OK){
NSAssert1(0, @"Error: Failed to prepare stmt with message '%s'", sqlite3_errmsg(database));
}
}
sqlite3_bind_text(getsets_statement, 1, [cls UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(getsets_statement, 2, [divname UTF8String], -1, SQLITE_TRANSIENT);
while(sqlite3_step(getsets_statement) == SQLITE_ROW){
setNumber= sqlite3_column_int(getsets_statement, 0);
roll = sqlite3_column_int(getsets_statement, 1);
[numArr addObject:[NSNumber numberWithInt:setNumber]];
[rollArr addObject:[NSNumber numberWithInt:roll]];
}
sqlite3_reset(getsets_statement);
L'instruction s'exécute parfaitement la première fois qu'elle est appelée. Mais la prochaine fois que j'appelle cette méthode, j'obtiens un sqlite3error
. Les valeurs de divname
et cls
sont présentes (a fait un NSLog
et vérifié) mais je ne comprends pas pourquoi je reçois cette erreur. J'ai l'erreur à la première déclaration bind_text
.
C'est dans la console gdb
Program received signal: “EXC_BAD_ACCESS”.
(gdb) where
#0 0x9041857f in sqlite3Error()
#1 0x9041acea in vdbeUnbind()
#2 0x9041b2c8 in bindText()
Toute aide?
Etes-vous sûr que cls et divname sont des objets valides? –