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();
            }
        }
Example #2
0
        private IDbCommandResult QueryResultOfDictionary(IEnumerable <IDictionary> dictionaries)
        {
            var result = new QueryResult();

            var columnNames = new HashSet <object>();

            foreach (var dictionary in dictionaries)
            {
                foreach (var key in dictionary.Keys)
                {
                    columnNames.Add(key.ToString());
                }
            }

            foreach (var columnName in columnNames)
            {
                result.AddColumn(columnName.ToString(), typeof(string));
            }
            foreach (var dictionary in dictionaries)
            {
                var values = new List <string>();
                foreach (var columnName in columnNames)
                {
                    if (dictionary.Contains(columnName))
                    {
                        values.Add(dictionary[columnName].ToString());
                    }
                    else
                    {
                        values.Add(string.Empty);
                    }
                }
            }
            return(result);
        }
Example #3
0
        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);
        }
Example #4
0
        private static QueryResult CreateResult(IDataRecord reader)
        {
            var result = new QueryResult();

            for (var ii = 0; ii < reader.FieldCount; ii++)
            {
                var name = reader.GetName(ii);
                var type = reader.GetFieldType(ii);
                result.AddColumn(name, type);
            }
            return(result);
        }
Example #5
0
        private IDbCommandResult QueryResultOfDynamicDataRow(IEnumerable <DynamicDataRow> 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);
        }
Example #6
0
        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);
        }