无法在SQLite中的表中插入行

时间:2011-06-27 06:36:59

标签: iphone sqlite

我有两个使用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;
    }

}

但是这个代码在一个类中工作但在这个类中没有。如何找出错误?

1 个答案:

答案 0 :(得分:2)

将FMDB用于SQLITE目的,它更容易管理,更容易实现sqlite。在谷歌搜索FMDB教程,你会发现它比你当前的实现容易得多。