1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "sql/transaction.h" 6 7 #include "base/logging.h" 8 #include "sql/connection.h" 9 10 namespace sql { 11 Transaction(Connection * connection)12Transaction::Transaction(Connection* connection) 13 : connection_(connection), 14 is_open_(false) { 15 } 16 ~Transaction()17Transaction::~Transaction() { 18 if (is_open_) 19 connection_->RollbackTransaction(); 20 } 21 Begin()22bool Transaction::Begin() { 23 DCHECK(!is_open_) << "Beginning a transaction twice!"; 24 is_open_ = connection_->BeginTransaction(); 25 return is_open_; 26 } 27 Rollback()28void Transaction::Rollback() { 29 DCHECK(is_open_) << "Attempting to roll back a nonexistent transaction. " 30 << "Did you remember to call Begin() and check its return?"; 31 is_open_ = false; 32 connection_->RollbackTransaction(); 33 } 34 Commit()35bool Transaction::Commit() { 36 DCHECK(is_open_) << "Attempting to commit a nonexistent transaction. " 37 << "Did you remember to call Begin() and check its return?"; 38 is_open_ = false; 39 return connection_->CommitTransaction(); 40 } 41 42 } // namespace sql 43