sqlite 是支持事務處理的。如果你知道你要同步刪除很多數據,不仿把它們做成一個統一的事務。
通常一次 sqlite3_exec 就是一次事務,如果你要刪除1萬條數據,sqlite就做了1萬次:開始新事務->刪除一條數據->提交事務->開始新事務->… 的過程。這個操作是很慢的。因為時間都花在了開始事務、提交事務上。
你可以把這些同類操作做成一個事務,這樣如果操作錯誤,還能夠回滾事務。
事務的操作沒有特別的接口函數,它就是一個普通的 sql 語句而已:
分別如下:
int result;
result = sqlite3_exec( db, "begin transaction", 0, 0, &zErrorMsg ); //開始一個事務
result = sqlite3_exec( db, "commit transaction", 0, 0, &zErrorMsg ); //提交事務
result = sqlite3_exec( db, "rollback transaction", 0, 0, &zErrorMsg ); //回滾事務
新聞熱點
疑難解答