2015-11-04 29 views
0

我有我的SQLite數據庫執行一個SQL指令「私人」的方法:請問,如果我打開和數據庫緊密聯繫的事務的狀態保持甚至

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

的問題是,在在方法的開始,它打開一個到數據庫的連接,最後在方法結束時關閉它。現在

,我要的是創建用於創建,提交和回滾事務3種私有方法,每個將調用

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

其中%命令%的「開始」,「提交」,「 ROLLBACK「,取決於方法。

而且,我接下來要做的事情是調用begin transaction,然後使用前面介紹的runQuery:isQueryExecutable:witArguments:方法,最後執行commit或rollback。

我的問題是:即使每次我調用runQuery:isQueryExecutable:witArguments:我會打開並關閉與數據庫的連接嗎?

示例代碼:

createTransaction 
for n times: 
    call runQuery 
commitTransaction 

回答

1

每個連接都使用只有一個交易;用一個仍然有效的交易關閉連接將會回滾。

您不應該重複打開數據庫。只需使用單個連接來訪問所有數據庫。

相關問題