即使我打开和关闭与数据库的连接,事务的状态是否仍然存在

时间:2015-11-04 12:23:36

标签: objective-c sqlite transactions

我有一个“私有”方法,在我的sqlite数据库上执行sql指令:

-(void)runQuery:(const char*)query isQueryExecutable:(BOOL)queryExecutable withArguments:(NSArray*)arguments

问题在于,在方法开始时,它会打开与数据库的连接,最后在方法结束时关闭它。

现在,我想要的是创建3个私有方法来创建,提交和回滚一个事务,每个方法都会调用

sqlite3_exec(db, %command%, 0, 0, 0)

其中%命令%为“BEGIN”,“COMMIT”,“ROLLBACK”,具体取决于方法。

而且,我接下来要做的是调用begin transaction,然后使用runQuery:isQueryExecutable:witArguments:前面描述的方法,最后是commit或rollback。

我的问题是:即使每次调用runQuery,事务都会保持打开状态:isQueryExecutable:witArguments:我打开并关闭与数据库的连接?

示例代码:

createTransaction
for n times:
    call runQuery
commitTransaction

1 个答案:

答案 0 :(得分:1)

每个连接只使用一个事务;使用仍处于活动状态的事务关闭连接会将其回滚。

您不应重复重新打开数据库。只需使用一个连接即可访问所有数据库。