Beispiel #1
0
        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());
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }