(4) 事务处理
sqlite 是支持事务处理的。如果你知道你要同步删除很多数据,不仿把它们做成一个统一的事务。# p4 T' j s+ ~$ K: r
通常一次 sqlite3_exec 就是一次事务,如果你要删除1万条数据,sqlite就做了1万次:开始新事务->删除一条数据->提交事务->开始新事务->… 的过程。这个操作是很慢的。因为时间都花在了开始事务、提交事务上。( N' a- [* y- d/ ~' n! O
你可以把这些同类操作做成一个事务,这样如果操作错误,还能够回滚事务。3 C, P9 ^3 m- w
事务的操作没有特别的接口函数,它就是一个普通的 sql 语句而已:$ c+ @6 H- b" M* I; K* z
分别如下:
复制内容到剪贴板
代码:
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 ); //回滚事务