/// <summary>
 /// Closes the connection to the database. Open transactions are rolled back.
 /// </summary>
 public override void Close()
 {
     if (this._db == null || this._db.ptr == IntPtr.Zero)
         return;
     SqliteTransaction transaction = this.Transaction;
     if (transaction != null)
     {
         // ISSUE: explicit non-virtual call
         transaction.Dispose() ;
     }
     this._db.Dispose();
     this._db = (sqlite3)null;
     this.SetState(ConnectionState.Closed);
 }