我有两个使用SQLite数据库的A和B类。类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];
}
runDynamicSQL的代码:
- (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;
}
}
但是这个代码在一个类中工作但在这个类中没有。如何找出错误?
答案 0 :(得分:2)
将FMDB用于SQLITE目的,它更容易管理,更容易实现sqlite。在谷歌搜索FMDB教程,你会发现它比你当前的实现容易得多。