diff --git a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
index fb08d65..53fc49e 100644
--- a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
+++ b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
@@ -109,43 +109,44 @@ namespace Hyena.Data.Sqlite
             execution_exception = null;
             result = null;
 
-            SqliteCommand sql_command = new SqliteCommand (CurrentSqlText);
-            sql_command.Connection = connection;
-
-            hconnection.OnExecuting (sql_command);
-
-            try {
-                if (log_all)
-                    ticks = System.Environment.TickCount;
+            using (SqliteCommand sql_command = new SqliteCommand (CurrentSqlText)) {
+                sql_command.Connection = connection;
+
+                hconnection.OnExecuting (sql_command);
+
+                try {
+                    if (log_all)
+                        ticks = System.Environment.TickCount;
+
+                    switch (command_type) {
+                        case HyenaCommandType.Reader:
+                            using (SqliteDataReader reader = sql_command.ExecuteReader ()) {
+                                result = new HyenaSqliteArrayDataReader (reader);
+                            }
+                            break;
+
+                        case HyenaCommandType.Scalar:
+                            result = sql_command.ExecuteScalar ();
+                            break;
+
+                        case HyenaCommandType.Execute:
+                        default:
+                            sql_command.ExecuteNonQuery ();
+                            result = sql_command.LastInsertRowID ();
+                            break;
+                    }
 
-                switch (command_type) {
-                    case HyenaCommandType.Reader:
-                        using (SqliteDataReader reader = sql_command.ExecuteReader ()) {
-                            result = new HyenaSqliteArrayDataReader (reader);
+                    if (log_all) {
+                        Log.DebugFormat ("Executed in {0}ms {1}", System.Environment.TickCount - ticks, sql_command.CommandText);
+                        CommandExecutedHandler handler = CommandExecuted;
+                        if (handler != null) {
+                            handler (this, new CommandExecutedArgs (Text, sql_command.CommandText, null, System.Environment.TickCount - ticks));
                         }
-                        break;
-
-                    case HyenaCommandType.Scalar:
-                        result = sql_command.ExecuteScalar ();
-                        break;
-
-                    case HyenaCommandType.Execute:
-                    default:
-                        sql_command.ExecuteNonQuery ();
-                        result = sql_command.LastInsertRowID ();
-                        break;
-                }
-
-                if (log_all) {
-                    Log.DebugFormat ("Executed in {0}ms {1}", System.Environment.TickCount - ticks, sql_command.CommandText);
-                    CommandExecutedHandler handler = CommandExecuted;
-                    if (handler != null) {
-                        handler (this, new CommandExecutedArgs (Text, sql_command.CommandText, null, System.Environment.TickCount - ticks));
                     }
+                } catch (Exception e) {
+                    Log.DebugFormat (String.Format ("Exception executing command: {0}", sql_command.CommandText), e.ToString ());
+                    execution_exception = e;
                 }
-            } catch (Exception e) {
-                Log.DebugFormat (String.Format ("Exception executing command: {0}", sql_command.CommandText), e.ToString ()); 
-                execution_exception = e;
             }
 
             finished_event.Reset ();
