Esempio n. 1
0
        /// <summary>
        /// Handle the DBNull instance values returned by a <see cref="IDataReader"/> properly.
        /// </summary>
        /// <param name="reader">Provide the <see cref="IDataReader"/> instance</param>
        /// <param name="fieldIndex">Provide the database field index</param>
        /// <param name="defaultValueIfNull">Provide the value you want to get back, if the original
        /// value is null or a instance of <seealso cref="DBNull">DBNull</seealso>.</param>
        /// <returns>Either the provided value parameter itself or the default value.</returns>
        /// <exception cref="ArgumentNullException">If reader is null</exception>
        /// <exception cref="IndexOutOfRangeException">If the <paramref name="fieldIndex"/> is out of range</exception>
        public static string Parse([NotNull] IDataReader reader, int fieldIndex, string defaultValueIfNull = null)
        {
            reader.ExceptionIfNull("reader");

            var theValue = WrappedGetValueByIndex(reader, fieldIndex);
            var nullable = DbObjectValueParser.SafeParseString(theValue, fieldIndex);

            return(nullable ?? defaultValueIfNull);
        }
Esempio n. 2
0
        /// <summary>
        /// Handle the DBNull instance values returned by a <see cref="IDataReader"/> properly.
        /// </summary>
        /// <param name="reader">Provide the <see cref="IDataReader"/> instance</param>
        /// <param name="fieldName">Provide the database field name</param>
        /// <param name="defaultValueIfNull">Provide the value you want to get back, if the original
        /// value is null or a instance of <seealso cref="DBNull">DBNull</seealso>.</param>
        /// <returns>Either the provided value parameter itself or the default value.</returns>
        /// <exception cref="ArgumentNullException">If reader or <paramref name="fieldName"/> is null/empty</exception>
        /// <exception cref="ArgumentOutOfRangeException">If the <paramref name="fieldName"/> is not member of the resultset</exception>
        public static string Parse([NotNull] IDataReader reader, [NotNull] string fieldName, string defaultValueIfNull = null)
        {
            reader.ExceptionIfNull("reader");
            fieldName.ExceptionIfNullOrEmpty("fieldName");

            var theValue = WrappedGetValueByName(reader, fieldName);
            var nullable = DbObjectValueParser.SafeParseString(theValue, fieldName);

            return(nullable ?? defaultValueIfNull);
        }
Esempio n. 3
0
 /// <summary>
 /// Parses the specified value for string content.
 /// </summary>
 /// <param name="value">The value.</param>
 /// <param name="defaultValueIfNull">The default value.</param>
 /// <returns></returns>
 public static string ParseValue(object value, string defaultValueIfNull = null)
 {
     return(DbObjectValueParser.SafeParseString(value, defaultValueIfNull));
 }
Esempio n. 4
0
        private static T SwitchParserByType <T>(object value, object fieldInfo, T defaultValueIfNull) where T : struct
        {
            object dv = defaultValueIfNull;

            // most common types first:
            switch (Type.GetTypeCode(typeof(T)))
            {
            case TypeCode.Int32:
            {
                var nullable = DbObjectValueParser.SafeParseNullableInt32(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Int64:
            {
                var nullable = DbObjectValueParser.SafeParseNullableInt64(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Double:
            {
                var nullable = DbObjectValueParser.SafeParseNullableDouble(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Single:
            {
                var nullable = DbObjectValueParser.SafeParseNullableSingle(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Decimal:
            {
                var nullable = DbObjectValueParser.SafeParseNullableDecimal(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Boolean:
            {
                var nullable = DbObjectValueParser.SafeParseNullableBoolean(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.UInt64:
            {
                var nullable = DbObjectValueParser.SafeParseNullableUInt64(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.UInt32:
            {
                var nullable = DbObjectValueParser.SafeParseNullableUInt32(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Int16:
            {
                var nullable = DbObjectValueParser.SafeParseNullableInt16(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.UInt16:
            {
                var nullable = DbObjectValueParser.SafeParseNullableUInt16(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.Byte:
            {
                var nullable = DbObjectValueParser.SafeParseNullableByte(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            case TypeCode.SByte:
            {
                var nullable = DbObjectValueParser.SafeParseNullableSByte(value, fieldInfo);
                return(nullable.HasValue ? (T)(IConvertible)nullable.Value : defaultValueIfNull);
            }

            default:
            {
#pragma warning disable 184
                if (typeof(T) is Enum)
#pragma warning restore 184
                {
                    // ReSharper disable HeuristicUnreachableCode
                    return((T)(IConvertible)DbObjectValueParser.SafeParseEnum(value, (Enum)dv, fieldInfo, false));
                    // ReSharper restore HeuristicUnreachableCode
                }

                if (typeof(T) == typeof(DateTime))
                {
                    var nullable = DbObjectValueParser.SafeParseNullableDateTime(value, fieldInfo);
                    return(nullable != null ? (T)(IConvertible)nullable : defaultValueIfNull);
                }

                //TODO:??
                if (typeof(T) == typeof(DbDate))
                {
                    var nullable = DbObjectValueParser.SafeParseNullableDate(value, fieldInfo);
                    return(nullable.HasValue ? (T)(object)nullable.Value : defaultValueIfNull);
                }

                if (typeof(T) == typeof(DbTime))
                {
                    var nullable = DbObjectValueParser.SafeParseNullableTime(value, fieldInfo);
                    return(nullable.HasValue ? (T)(object)nullable.Value : defaultValueIfNull);
                }

                throw new NotImplementedException("SwitchParserByType<" + typeof(T).Name + ">(value) not (yet) implemented");
            }
            }
        }