libsqlite3x  2007.10.18
sqlite3x_transaction.cpp
00001 /*
00002     Copyright (C) 2004-2005 Cory Nelson
00003 
00004     This software is provided 'as-is', without any express or implied
00005     warranty.  In no event will the authors be held liable for any damages
00006     arising from the use of this software.
00007 
00008     Permission is granted to anyone to use this software for any purpose,
00009     including commercial applications, and to alter it and redistribute it
00010     freely, subject to the following restrictions:
00011 
00012     1. The origin of this software must not be misrepresented; you must not
00013         claim that you wrote the original software. If you use this software
00014         in a product, an acknowledgment in the product documentation would be
00015         appreciated but is not required.
00016     2. Altered source versions must be plainly marked as such, and must not be
00017         misrepresented as being the original software.
00018     3. This notice may not be removed or altered from any source distribution.
00019     
00020     CVS Info :
00021         $Author: sgbeal $
00022         $Date: 2007/02/25 23:59:06 $
00023         $Revision: 1.4 $
00024 */
00025 
00026 #include <sqlite3.h>
00027 #include "sqlite3x.hpp"
00028 
00029 namespace sqlite3x {
00030 
00031 sqlite3_transaction::sqlite3_transaction(sqlite3_connection &con, bool start) : con(con),intrans(false) {
00032     if(start) begin();
00033 }
00034 
00035 sqlite3_transaction::~sqlite3_transaction() {
00036     if(intrans) {
00037         try {
00038             rollback();
00039         }
00040         catch(...) {
00041             return;
00042         }
00043     }
00044 }
00045 
00046 void sqlite3_transaction::begin() {
00047     con.executenonquery("begin");
00048     intrans=true;
00049 }
00050 
00051 void sqlite3_transaction::commit() {
00052     con.executenonquery("commit");
00053     intrans=false;
00054 }
00055 
00056 void sqlite3_transaction::rollback() {
00057     con.executenonquery("rollback");
00058     intrans=false;
00059 }
00060 
00061 }