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 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); }
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 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); }
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); }
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); }