public IDbCommandResult Execute(string command)
        {
            try
            {
                _dbConnection.Open();
                var query = new SchemaQuery(command);
                var schema = GetSchemaFrom(query);
                var result = new QueryResult();

                foreach (DataColumn column in schema.Columns)
                {
                    if (query.SelectAll || query.ColumnNames.Contains(column.ColumnName.ToLowerInvariant()))
                    {
                        result.AddColumn(column.ColumnName, column.DataType);
                    }
                }
                foreach (DataRow row in schema.Rows)
                {
                    result.AddRow(row.ItemArray);
                }
                return result;
            }
            finally
            {
                _dbConnection.Close();
            }
        }
        private IDbCommandResult QueryResultOfDynamicRecord(IEnumerable<DynamicRecord> values)
        {
            var result = new QueryResult();
            if (values.IsEmpty())
            {
                return result;
            }

            var columns = values.First().Columns;
            columns.Each(c => result.AddColumn(c, typeof(string)));
            foreach (var record in values)
            {
                var theRecord = record;
                result.AddRow(columns.Select(c => theRecord[c]));
            }
            return result;
        }
 private IDbCommandResult QueryResultOfValues(IEnumerable values, Type type)
 {
     var result = new QueryResult();
     result.AddColumn(type.Name, type);
     foreach (var value in values)
     {
         result.AddRow(value.AsArray());
     }
     return result;
 }
 private IDbCommandResult QueryResultOfType(IEnumerable values, Type type)
 {
     var result = new QueryResult();
     var properties = type.GetProperties();
     if (properties.IsEmpty())
     {
         return QueryResultOfValues(values, type);
     }
     foreach (var property in properties)
     {
         result.AddColumn(property.Name, property.PropertyType);
     }
     foreach (var value in values)
     {
         var theValue = value;
         var memberValues = properties.Select(p => p.GetValue(theValue, new object[0]));
         result.AddRow(memberValues);
     }
     return result;
 }