Example #1
0
        private static T GetValueFromReader <T>(bool isNull, IDataReader reader, IRecordWrapper wrapper, int index)
        {
            var typeCode = Type.GetTypeCode(typeof(T).GetNonNullableType());

            switch (typeCode)
            {
            case TypeCode.Boolean:
                return((T)(object)(isNull ? new bool?() : wrapper.GetBoolean(reader, index)));

            case TypeCode.Char:
                return((T)(object)(isNull ? new char?() : wrapper.GetChar(reader, index)));

            case TypeCode.Byte:
                return((T)(object)(isNull ? new byte?() : wrapper.GetByte(reader, index)));

            case TypeCode.Int16:
                return((T)(object)(isNull ? new short?() : wrapper.GetInt16(reader, index)));

            case TypeCode.Int32:
                return((T)(object)(isNull ? new int?() : wrapper.GetInt32(reader, index)));

            case TypeCode.Int64:
                return((T)(object)(isNull ? new long?() : wrapper.GetInt64(reader, index)));

            case TypeCode.Decimal:
                return((T)(object)(isNull ? new decimal?() : wrapper.GetDecimal(reader, index)));

            case TypeCode.Double:
                return((T)(object)(isNull ? new double?() : wrapper.GetDouble(reader, index)));

            case TypeCode.String:
                return((T)(object)(isNull ? string.Empty : wrapper.GetString(reader, index)));

            case TypeCode.DateTime:
                return((T)(object)(isNull ? new DateTime?() : wrapper.GetDateTime(reader, index)));

            case TypeCode.Single:
                return((T)(object)(isNull ? new float?() : wrapper.GetFloat(reader, index)));

            default:
                return((T)wrapper.GetValue(reader, index));
            }
        }
        private int GetRecordCount(IDataReader reader, IRecordWrapper wrapper)
        {
            var count = 0;

            if (reader.Read())
            {
                switch (reader.GetFieldType(0).GetDbType())
                {
                case DbType.Decimal:
                    count = (int)wrapper.GetDecimal(reader, 0);
                    break;

                case DbType.Int32:
                    count = wrapper.GetInt32(reader, 0);
                    break;

                case DbType.Int64:
                    count = (int)wrapper.GetInt64(reader, 0);
                    break;
                }
            }
            return(count);
        }