sqlite 事务处理 java_cocos2d-x 中 Sqlite3 事务(Transaction)操作

在sqlite3中,事务是没提炼出一个接口。就只好写到sql语句中,不过倒是不太麻烦。

sqlite3_exec ( m_pDB , "begin transaction" , 0 , 0 , & errMsg );

sqlite3_exec ( m_pDB , "commit transaction" , 0 , 0 , & errMsg );

sqlite3_exec ( m_pDB , "rollback transaction" , 0 , 0 , &errMsg );

我将事务操作封装到两个函数中,开始和结束时调用。如果关闭数据库时未结束事务,

默认情况是

回滚。

函数的定义和实现如下:

/*

*开始一个事物,要在完成事物后调用结束。

*

*返回为SQLITE_XXX标准宏

*/

int beginTransaction();

/*

*结束一个事务。

*参数为先前执行sql语句的返回值,即标志成功还是要回滚。

*

*返回为SQLITE_XXX标准宏

*/

int endTransaction(int sqlResult);

int DataUtil::beginTransaction()

{

char msg[ERR_LENGTH] = {0};

char* errMsg = msg;

int result = sqlite3_exec ( m_pDB , "begin transaction" , 0 , 0 , & errMsg );

if(result != SQLITE_OK )

CCLog( "开始事务记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg );

return result;

}

int DataUtil::endTransaction(int sqlResult)

{

if (sqlResult ==SQLITE_OK)

{

char msg[ERR_LENGTH] = {0};

char* errMsg = msg;

int result = sqlite3_exec ( m_pDB , "commit transaction" , 0 , 0 , & errMsg );

if(result != SQLITE_OK )

CCLog( "提交事务记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg );

return result;

}

else

{

char msg[ERR_LENGTH] = {0};

char* errMsg = msg;

int result = sqlite3_exec ( m_pDB , "rollback transaction" , 0 , 0 , & errMsg );

if(result != SQLITE_OK )

CCLog( "回滚事务记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg );

return result;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值