Xcode 在SQlite中插入到不同的表中

Xcode 在SQlite中插入到不同的表中,xcode,sqlite,insert,Xcode,Sqlite,Insert,我需要在iPhone应用程序中插入一组数据,但要在不同的表中插入。表名在此数据中 这就是我想做的: NSString *statement = @"insert into ? values (?, ?, 0)"; sqlite3_stmt *compiledStatement; if(sqlite3_prepare_v2(database, [statement UTF8String], -1, &compiledStatement, NULL) == SQLIT

我需要在iPhone应用程序中插入一组数据,但要在不同的表中插入。表名在此数据中

这就是我想做的:

    NSString *statement = @"insert into ? values (?, ?, 0)";
    sqlite3_stmt *compiledStatement;
    if(sqlite3_prepare_v2(database, [statement UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
    {
        for(UpdateItems *item in updateData){
            sqlite3_bind_text(  compiledStatement, 1, [item.table UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(  compiledStatement, 2, [item.code UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(  compiledStatement, 3, [item.data UTF8String], -1, SQLITE_TRANSIENT);

            while(YES){
                NSInteger result = sqlite3_step(compiledStatement);
                if(result == SQLITE_DONE){
                    break;
                }
                else if(result != SQLITE_BUSY){
                    break;
                }
            }
            sqlite3_reset(compiledStatement);
        }
    } else  
        printf("db error: %s\n", sqlite3_errmsg(database)); 

    sqlite3_finalize(compiledStatement);
    sqlite3_close(database);
运行上面的脚本时,我得到错误:没有这样的表:?这是正常的,因为在sqlite3\u prepare\u v2语句中,数据尚未绑定,所以SQLite不知道该表


现在,我将在循环中移动孔sqlite3\u prepare\u v2块,并使用stringWithFormat更改表名的第一个问号,在准备之后,但是否有其他解决方案更简单?

这是最简单的正确解决方案


但是,每次不准备查询有性能优势。如果性能是一个问题,那么我建议创建一个从表名到准备好的查询的映射。然后,您只需要在第一次遇到表名时准备查询。

这是最简单正确的解决方案


但是,每次不准备查询有性能优势。如果性能是一个问题,那么我建议创建一个从表名到准备好的查询的映射。然后,您只需在第一次遇到表名时准备查询。

谢谢。映射的想法很好。不过,我还是使用了最简单的解决方案。谢谢。映射的想法很好。然而,我毕竟使用了最简单的解决方案。