Iphone 无法在SQLite的表中插入行

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

我有两个使用SQLite数据库的类A和B。类A使用TableA,类B使用tableB。我可以在类A中插入数据,但不能在类B中插入数据。但是,select查询在类B中工作正常。我使用了与类A相同的插入功能。我已经检查了我的代码好几次,仍然无法解决这个问题

将数据插入数据库的代码。 [app.sk insertDictionary:dictfrndetail 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];
}

但同样的代码在一个类中工作,但在这个类中不工作。如何找出错误?

将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;
    }

}