메서드에서 내 응용 프로그램에서 sqlite 문을 다시 사용하려고합니다. 다음은 관련 코드입니다.왜 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);
문은 처음 호출 할 때 완벽하게 실행됩니다. 그러나 다음에이 메소드를 호출하면 sqlite3error
이됩니다. divname
과 cls
의 값이 존재하지만 (NSLog
을 확인했지만)이 오류가 나타나는 이유를 이해할 수 없습니다. 처음으로 bind_text
성명서에 오류가 나타납니다.
이것은 GDB 콘솔
Program received signal: “EXC_BAD_ACCESS”.
(gdb) where
#0 0x9041857f in sqlite3Error()
#1 0x9041acea in vdbeUnbind()
#2 0x9041b2c8 in bindText()
어떤 도움에?
cls와 divname이 유효한 개체입니까? –