数据库 – SQLite 3 C API事务

前端之家收集整理的这篇文章主要介绍了数据库 – SQLite 3 C API事务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用sqlite3进行iPhone开发,我试图将一些插入语句包装到事务中.目前,我有下面的代码,它正在正常工作,但在阅读了另一个问题后,我意识到这将是一个交易而不是一个交易会更好.我找不到C API调用来开始和提交一个事务.一些代码在Objective-C中,但我不认为这是真正的问题.
- (void)saveAnimals {
    //Insert all the animals into the zoo database
    int i;

    const char *sql = "insert into Animal(Zoo_ID,Animal_Num,Animal_Text) Values(?,?,?)";
    for (i = 0; i < ([[self animalArray] count] - 1); i++) {

        if(addStmt == nil) {
            if(sqlite3_prepare_v2(database,sql,-1,&addStmt,NULL) != sqlITE_OK)
                NSAssert1(0,@"Error while creating add statement. '%s'",sqlite3_errmsg(database));
        }
        int animalNum = [[[self animalArray] objectAtIndex:i] animal_Number];
        NSString *animalText = [[NSString alloc] initWithString:[[[self animalArray] objectAtIndex:i] animal_Text]];
        sqlite3_bind_int(addStmt,1,zoo_ID);   
        sqlite3_bind_int(addStmt,2,animalNum);    
        sqlite3_bind_text(addStmt,3,[animalText UTF8String],sqlITE_TRANSIENT);
        [animalText release];
        if(sqlITE_DONE != sqlite3_step(addStmt)) {
            NSAssert1(0,@"Error while inserting data. '%s'",sqlite3_errmsg(database));
        }

        //Reset the add statement.
        sqlite3_reset(addStmt);     
    }
}

我认为需要做的是将sqlite3_prepare_v2命令从for循环中取出,启动事务,通过for循环,提交事务.但是,我不知道“启动事务”和“提交事务”的调用是什么.我还会用sqlite3_step吗?谢谢你的帮助.

解决方法

开始一个事务:sqlite3_exec(db,“BEGIN”,0);

提交一个事务:sqlite3_exec(db,“COMMIT”,0);

猜你在找的MsSQL相关文章