В моем приложении есть простая функция:
-(NSMutableArray *)SelectProductID:(NSMutableArray *)arr
{
NSLog(@"----------------");
sqlite3_stmt *statement;
NSMutableArray *arrPordID = [[NSMutableArray alloc]init];
@try
{
//Get productID
for(NSString *strSubProductID in arr)
{
NSString *s = [NSString stringWithFormat:@"SELECT ProductID FROM SubProducttable where SubProductID=%@",strSubProductID];
const char *sql = [s cStringUsingEncoding:NSASCIIStringEncoding];
if (sqlite3_prepare_v2(database, [s cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW){
char *dbString;
dbString = (char *)sqlite3_column_text(statement, 0);
NSString *pID = (dbString) ? [NSString stringWithUTF8String:dbString] : @"";
[arrPordID addObject:pID];
}
}
}
}
@catch (NSException *exception) {
@throw exception;
}
@finally {
sqlite3_finalize(statement);
}
return arrPordID;
}
Я столкнулся со странной проблемой здесь. Когда приложение достигает while (sqlite3_step(statement) == SQLITE_ROW){
, цикл никогда не вводится. Я не знаю почему. Я выполнил тот же запрос в диспетчере SQLite (когда приложение не запущено). И я получаю результат как один. В результате я получаю 2 . Но здесь я ничего не получаю.
И да, я всегда закрываю базу данных в диспетчере SQLite всякий раз, когда запускаю свое приложение. Я также очистил приложение, перезапустил XCode и удалил приложение из симулятора. Но безуспешно.
Также я видел странную вещь во время отладки. Во время отладки sqlite3_stmt *statement
всегда пропускается. Это причина, по которой я не получаю никакого результата?