0

recordDict 是一个NSMutableDictionary与表的列名相同的键。

-(void) insertRecord:(NSMutableDictionary *)recordDict tableName:(NSString *)table{

    @try {

        if (sqlite3_open([databasePath UTF8String], &database)==SQLITE_OK) {

            NSMutableString *statement=[NSMutableString stringWithFormat:@"insert into %@ (",table];
            sqlite3_stmt *compiledStatement;
            NSArray *keys=[recordDict allKeys];
            for (int i=0; i< [keys count]; ++i) {
                [statement appendString:[keys objectAtIndex:i]];
                int j=i+1;
                if (j == [keys count]) {
                    [statement appendString:@")"];
                }
                else
                {
                    [statement appendString:@","];
                }
            }
            [statement appendString:@" values ("];
            for (int i=0; i < [keys count]; ++i) {
                [statement appendString:[recordDict objectForKey:[keys objectAtIndex:i]]];
                int j=i+1;
                if (j == [keys count]) {
                    [statement appendString:@")"];
                }
                else
                {
                    [statement appendString:@","];
                }
            }

            const char *sqlstatement = [statement UTF8String];
            if (sqlite3_prepare_v2(database, sqlstatement, -1, &compiledStatement, NULL)== SQLITE_OK)
            {
                if (SQLITE_DONE!=sqlite3_step(compiledStatement) ) 
                {
                    NSAssert1(0,@"Error when inserting  %s",sqlite3_errmsg(database));
                }
                else 
                {
                    //NSLog(@"Data inserted Successfully");
                }
                //[recordDict release];
            }
            else {
                //NSLog(@"Failed with error");
                NSAssert1(0,@"Error when creation %s",sqlite3_errmsg(database));

            }

        }
        sqlite3_close(database);
    }
    @catch (NSException *exception) {
        NSLog(@"Error info is %@",[exception description]);
    }

}

此代码给出了所需的结果并适用于任何表。但我想要小代码。谁能帮我?

4

1 回答 1

0
-(void)tableInsert:(NSString*)field1 Into:(NSString*)field2 intoTable:(NSString*)field3:(NSString*)field4
 {
char *err;

NSString *sql=[NSString stringWithFormat:@"INSERT OR REPLACE INTO 'tablename' ('f1' , 'f2','f3','f4') VALUES ( '%@','%@','%@','%@')",field1,field2,field3,field4];
NSLog(@"%@",sql);
if(sqlite3_exec(db,[sql UTF8String], NULL, NULL, &err)!=SQLITE_OK)
   {
    sqlite3_close(db);
    NSAssert(0,@"Error updating table");
   }
}    

this is simplest and short way.

于 2013-03-16T09:20:33.657 回答