我有一个控制器视图,他正在使用2个函数:
[appDelegate getFichesInfo:[[self.fichesCategory idModuleFiche] intValue] ]; //first function
self.fiche = (Fiche *)[appDelegate.fichesInfo objectAtIndex:0];
[appDelegate getFichesVisuels:[[self.fiche idFiche] intValue] ]; //second function not working
self.fiche = (Fiche *)[appDelegate.fichesInfo objectAtIndex:0];
所以在我的ressourceManager中,这里是详细的第二个函数:
- (void)getFichesVisuels:(int)value {
fichesVisuels = [[NSMutableArray alloc] init];
sqlite3 *database;
if(sqlite3_open([self.databasePath UTF8String], &database) == SQLITE_OK) {
sqlite3_reset(getFichesVisuelsStatement);
sqlite3_bind_int(getFichesVisuelsStatement, 1, value);
while(sqlite3_step(getFichesVisuelsStatement) == SQLITE_ROW) {
NSString *aTitle = [NSString stringWithUTF8String:(char *)sqlite3_column_text(getFichesVisuelsStatement , 7)];
NSString *aLpath = [NSString stringWithUTF8String:(char *)sqlite3_column_text(getFichesVisuelsStatement , 8)];
Visuel *visuel = [[Visuel alloc] initWithName:aTitle lpath:aLpath];
[fichesVisuels addObject:visuel];
}
}
sqlite3_close(database);
}
问题是第二个函数不起作用(librairies例程被称为不按顺序),因为我已经以相同的方式调用第一个函数(我希望能够在同一时间使用参数执行许多查询)。我听说使用NSInvocation可以解决这个问题,但我不知道如何使用NSInvocation来转换我的代码。 有人可以帮帮我吗?
最诚挚的问候,
答案 0 :(得分:0)
您可能遇到的问题是sqlite3_close
之后您准备好的陈述无效。每次打开数据库时都需要创建一个新的预准备语句。
sqlite3_open
。sqlite3_prepare
和朋友准备声明。sqlite3_bind
绑定。sqlite3_step
。sqlite3_finalize
。sqlite3_close
关闭数据库。您不能只重置该语句,因为该语句是为不同的数据库句柄准备的。
我对SQLite不太熟悉。