数据库 – SQLite 3 C API事务

前端之家收集整理的这篇文章主要介绍了数据库 – SQLite 3 C API事务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用sqlite3进行iPhone开发,我试图将一些插入语句包装到事务中.目前,我有下面的代码,它正在正常工作,但在阅读了另一个问题后,我意识到这将是一个交易而不是一个交易会更好.我找不到C API调用来开始和提交一个事务.一些代码在Objective-C中,但我不认为这是真正的问题.
  1. - (void)saveAnimals {
  2. //Insert all the animals into the zoo database
  3. int i;
  4.  
  5. const char *sql = "insert into Animal(Zoo_ID,Animal_Num,Animal_Text) Values(?,?,?)";
  6. for (i = 0; i < ([[self animalArray] count] - 1); i++) {
  7.  
  8. if(addStmt == nil) {
  9. if(sqlite3_prepare_v2(database,sql,-1,&addStmt,NULL) != sqlITE_OK)
  10. NSAssert1(0,@"Error while creating add statement. '%s'",sqlite3_errmsg(database));
  11. }
  12. int animalNum = [[[self animalArray] objectAtIndex:i] animal_Number];
  13. NSString *animalText = [[NSString alloc] initWithString:[[[self animalArray] objectAtIndex:i] animal_Text]];
  14. sqlite3_bind_int(addStmt,1,zoo_ID);
  15. sqlite3_bind_int(addStmt,2,animalNum);
  16. sqlite3_bind_text(addStmt,3,[animalText UTF8String],sqlITE_TRANSIENT);
  17. [animalText release];
  18. if(sqlITE_DONE != sqlite3_step(addStmt)) {
  19. NSAssert1(0,@"Error while inserting data. '%s'",sqlite3_errmsg(database));
  20. }
  21.  
  22. //Reset the add statement.
  23. sqlite3_reset(addStmt);
  24. }
  25. }

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

解决方法

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

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

猜你在找的MsSQL相关文章