private T[] RunQuery <T>(string sql, CSParameterCollection parameters, int maxRows) where T : new() { Type objectType = typeof(T); List <T> list = new List <T>(); if (maxRows == 0) { maxRows = int.MaxValue; } using (new CSTransaction(DB)) { using (ICSDbReader reader = DB.CreateReader(sql ?? CSHelper.GetQueryExpression <T>(), parameters)) { int rowNum = 0; while (rowNum < maxRows && reader.Read()) { rowNum++; T obj = new T(); for (int i = 0; i < reader.FieldCount; i++) { string columnName = reader.GetName(i); PropertyInfo propertyInfo = objectType.GetProperty(columnName); object columnValue = reader[i]; if (columnValue is DBNull) { columnValue = null; } if (propertyInfo != null) { propertyInfo.SetValue(obj, columnValue.Convert(propertyInfo.PropertyType), null); } else { FieldInfo fieldInfo = objectType.GetField(columnName); if (fieldInfo != null) { fieldInfo.SetValue(obj, columnValue.Convert(fieldInfo.FieldType)); } } } list.Add(obj); } } } return(list.ToArray()); }
internal void FromDataReader(ICSDbReader dataReader, Dictionary <string, string> aliasMap) { for (int i = 0; i < dataReader.FieldCount; i++) { string aliasName = dataReader.GetName(i); string fieldName; if (aliasMap == null) { fieldName = aliasName; } else if (!aliasMap.TryGetValue(aliasName, out fieldName)) { continue; } CSSchemaColumn schemaColumn = _schema.Columns[fieldName]; if (schemaColumn == null || schemaColumn.Hidden) { continue; } object columnValue = dataReader[i]; if (columnValue == _schema.DB.NullFieldValue()) { columnValue = null; } if (schemaColumn.MappedField.Trim && columnValue is string) { columnValue = ((string)columnValue).Trim(); } CSFieldValue fieldValue = _fieldData["#" + schemaColumn.Name]; fieldValue.ValueDirect = columnValue; fieldValue.ValueState = CSFieldValueState.Read; } _dataState = CSObjectDataState.Loaded; }
public CSGenericRecord RunSingleQuery(string sql, CSParameterCollection parameters) { CSGenericRecord rec = new CSGenericRecord(); using (new CSTransaction(DB)) { using (ICSDbReader reader = DB.CreateReader(sql, parameters)) { if (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { rec[reader.GetName(i)] = (reader[i] is DBNull) ? null : reader[i]; } return(rec); } } } return(null); }
public CSGenericRecordList RunQuery(string sql, CSParameterCollection parameters) { CSGenericRecordList list = new CSGenericRecordList(); using (new CSTransaction(DB)) { using (ICSDbReader reader = DB.CreateReader(sql, parameters)) { while (reader.Read()) { CSGenericRecord record = new CSGenericRecord(); for (int i = 0; i < reader.FieldCount; i++) { record[reader.GetName(i)] = (reader[i] is DBNull) ? null : reader[i]; } list.Add(record); } } } return(list); }