2 // Mono.Data.SqliteClient.SqliteTransaction.cs
4 // Mono.Data.SqliteClient data access components for .Net
5 // Derived from ByteFX.Data
6 // With permission from Reggie Burnett to relicense under MIT/X11
8 // Permission is hereby granted, free of charge, to any person obtaining
9 // a copy of this software and associated documentation files (the
10 // "Software"), to deal in the Software without restriction, including
11 // without limitation the rights to use, copy, modify, merge, publish,
12 // distribute, sublicense, and/or sell copies of the Software, and to
13 // permit persons to whom the Software is furnished to do so, subject to
14 // the following conditions:
16 // The above copyright notice and this permission notice shall be
17 // included in all copies or substantial portions of the Software.
19 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 namespace Mono
.Data
.SqliteClient
33 public sealed class SqliteTransaction
: IDbTransaction
38 private IsolationLevel _isolationLevel
;
39 private SqliteConnection _connection
;
44 #region Contructors and destructors
46 internal SqliteTransaction()
51 void System
.IDisposable
.Dispose()
57 #region Public Properties
59 public IDbConnection Connection
61 get { return _connection; }
62 set { _connection = (SqliteConnection)value; }
65 public IsolationLevel IsolationLevel
67 get { return _isolationLevel; }
68 set { _isolationLevel = value; }
73 #region Public Methods
77 if (_connection
== null || _connection
.State
!= ConnectionState
.Open
)
78 throw new InvalidOperationException("Connection must be valid and open to commit transaction");
80 throw new InvalidOperationException("Transaction has already been committed or is not pending");
83 SqliteCommand cmd
= _connection
.CreateCommand();
84 cmd
.CommandText
= "COMMIT";
85 cmd
.ExecuteNonQuery();
94 public void Rollback()
96 if (_connection
== null || _connection
.State
!= ConnectionState
.Open
)
97 throw new InvalidOperationException("Connection must be valid and open to commit transaction");
99 throw new InvalidOperationException("Transaction has already been rolled back or is not pending");
102 SqliteCommand cmd
= _connection
.CreateCommand();
103 cmd
.CommandText
= "COMMIT";
104 cmd
.ExecuteNonQuery();