Iphone 无法在SQLite的表中插入行
我有两个使用SQLite数据库的类A和B。类A使用TableA,类B使用tableB。我可以在类A中插入数据,但不能在类B中插入数据。但是,select查询在类B中工作正常。我使用了与类A相同的插入功能。我已经检查了我的代码好几次,仍然无法解决这个问题 将数据插入数据库的代码。 [app.sk insertDictionary:dictfrndetail forTable:@“tblAllProfiles”] 我用于插入的函数:Iphone 无法在SQLite的表中插入行,iphone,sqlite,Iphone,Sqlite,我有两个使用SQLite数据库的类A和B。类A使用TableA,类B使用tableB。我可以在类A中插入数据,但不能在类B中插入数据。但是,select查询在类B中工作正常。我使用了与类A相同的插入功能。我已经检查了我的代码好几次,仍然无法解决这个问题 将数据插入数据库的代码。 [app.sk insertDictionary:dictfrndetail forTable:@“tblAllProfiles”] 我用于插入的函数: - (void)insertDictionary:(NSDicti
- (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];
}
但同样的代码在一个类中工作,但在这个类中不工作。如何找出错误?将FMDB用于您的SQLITE目的—比SQLITE更易于管理和实现。在google上搜索FMDB教程,您会发现它比您当前的实现简单得多。一些代码,包括SQL查询可能会更有帮助。yadav您是否尝试过调试您的应用程序?Sqlite返回什么错误代码?发布您的[runDynamicSQL:forTable:]方法。我已经找出了在sqlite作为编号的参数中发送设备id时的错误。我正在通过下面的代码获取设备id。sql查询仍在这附近抛出错误。NSString*uniqueIdentifier=[[UIDevice currentDevice]uniqueIdentifier];。我该怎么办?@Smriti您的编码风格很好。为什么不使用FMDB呢。看起来你是一个经验丰富的iPhone开发者。我通过蓝牙发送字典,其中我是设备id,其他数据只作为nsstring。当我在sqlite浏览器中执行查询时,它显示了设备id附近的错误。我甚至尝试了字符串格式。但是运气不好(@Rahul:项目即将完成。我现在不想实施这么大的改变。@Smriti您在iPhone方面有多少经验,现在在哪里工作?
- (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;
}
}