SQLITE的事务处理

来源:互联网 发布:百度收录域名不带www 编辑:程序博客网 时间:2024/05/20 17:27

在对 sqlite3 insert into 等操作时速度比较慢。

原因:它以文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据库进行大量的操作,就很慢。

解决办法:用事物的形式提交,因为开始事务后,进行的大量操作语句都保存在内存中,当提交时才全部写入数据库,此时,数据库文件也只用打开一次。如果操作错误,还可以回滚事务。

接口:事务的操作没有特别的接口函数,就是一个普通的 sql 语句而已,分别如下:

 

int ret ; 
ret = sqlite3_exec ( db , "begin transaction" , 0 , 0 , & zErrorMsg ); // 开始一个事务 

ret = sqlite3_exec ( db , "commit transaction" , 0 , 0 , & zErrorMsg ); // 提交事务 

ret = sqlite3_exec ( db , "rollback transaction" , 0 , 0 , & zErrorMsg );


例程:在进行大量的操作前使用如下语句 

ret = sqlite3_exec ( db , "begin transaction" , 0 , 0 ,& zErrorMsg ); 
for (...) 
{ 
  //insert into operate 

  
  // 如果操作错误 

 ret = sqlite3_exec ( db , "rollback transaction" , 0 , 0 , & zErrorMsg ) 
} 
ret = sqlite3_exec ( db , "commit transaction" , 0 , 0 , & zErrorMsg );

原创粉丝点击