cococos 2 d-xにおけるSqlite 3トランザクション(Transaction)アクション

2129 ワード


sqlite 3では、トランザクションはインタフェースを抽出していません.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 );


トランザクション・オペレーションを2つの関数にカプセル化し、開始と終了時に呼び出します.データベースを閉じたときにトランザクションが終了しない場合は、デフォルトではロールバックされます.
 
関数の定義と実装は次のとおりです.
 
/*

	 *      ,           。

	 *

	 *   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
" , 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
" , 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
" , result, errMsg ); return result; } }

このブログは阿修羅道から出ています.転載は出典を明記してください.http://blog.csdn.net/fansongy/article/details/8966730