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