У меня есть два класса A и B, использующих базу данных SQLite. Класс A использует TableA, а classB использует tableB. Я могу вставить данные в класс A, но не в класс B. Однако в классе B запрос на выборку работает правильно. Я использовал ту же функцию вставки, что и в классе A. Я несколько раз просматривал свой код, но не смог чтобы понять это.
Код, куда я вставляю данные в базу данных.
[app.sk insertDictionary: dictFrndDetail forTable: @ "tblAllProfiles"];
Функция, которую я использую для вставки:
- (void)insertDictionary:(NSDictionary *)dbData forTable:(NSString *)table {
NSMutableString *sql = [NSMutableString stringWithCapacity:16];
[sql appendFormat:@"INSERT INTO %@ (",table];
NSArray *dataKeys = [dbData allKeys];
for (int i = 0 ; i < [dataKeys count] ; i++) {
[sql appendFormat:@"%@",[dataKeys objectAtIndex:i]];
if (i + 1 < [dbData count]) {
[sql appendFormat:@", "];
}
}
[sql appendFormat:@") VALUES("];
for (int i = 0 ; i < [dataKeys count] ; i++) {
if ([[dbData objectForKey:[dataKeys objectAtIndex:i]] intValue]) {
[sql appendFormat:@"%@",[dbData objectForKey:[dataKeys objectAtIndex:i]]];
} else {
[sql appendFormat:@"'%@'",[dbData objectForKey:[dataKeys objectAtIndex:i]]];
}
if (i + 1 < [dbData count]) {
[sql appendFormat:@", "];
}
}
[sql appendFormat:@")"];
[self runDynamicSQL:sql forTable:table];
}
Код для запуска DynamicSQL:
- (BOOL)runDynamicSQL:(NSString *)sql forTable:(NSString *)table {
int result;
NSAssert1(self.dynamic == 1,[NSString stringWithString:@"Tried to use a dynamic function on a static database"],NULL);
sqlite3_stmt *statement;
if (statement = [self prepare:sql]) {
result = sqlite3_step(statement);
}
sqlite3_finalize(statement);
if (result) {
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(databaseTableWasUpdated:)]) {
[delegate databaseTableWasUpdated:table];
}
return YES;
} else {
return NO;
}
}
Но этот же код работает в одном классе, но не в этом классе. Как выяснить ошибку?