Exemple #1
0
        public static Field Create(object value)
        {
            // Numeric values ...
            if (value is bool)
            {
                return(Boolean((bool)value));
            }
            if (value is byte)
            {
                return(TinyInt((byte)value));
            }
            if (value is short)
            {
                return(SmallInt((short)value));
            }
            if (value is int)
            {
                return(Integer((int)value));
            }
            if (value is long)
            {
                return(BigInt((long)value));
            }
            if (value is float)
            {
                return(Float((float)value));
            }
            if (value is double)
            {
                return(Double((double)value));
            }

            if (value is SqlNumber)
            {
                var num = (SqlNumber)value;
                if (num.IsNull)
                {
                    return(Null(PrimitiveTypes.Numeric()));
                }

                if (num.CanBeInt32)
                {
                    return(Integer(num.ToInt32()));
                }
                if (num.CanBeInt64)
                {
                    return(BigInt(num.ToInt64()));
                }

                return(Number(num));
            }

            if (value is SqlDateTime)
            {
                return(Date((SqlDateTime)value));
            }
            if (value is DateTime)
            {
                return(Date((DateTime)value));
            }
            if (value is DateTimeOffset)
            {
                return(Date((DateTimeOffset)value));
            }

            // String values ...
            if (value is string)
            {
                return(String((string)value));
            }
            if (value is SqlString)
            {
                var s = (SqlString)value;
                if (s.IsNull)
                {
                    return(Null(PrimitiveTypes.String()));
                }

                return(String(s));
            }
            if (value is SqlLongString)
            {
                var clob = (SqlLongString)value;
                if (clob.IsNull)
                {
                    return(Null(PrimitiveTypes.Clob()));
                }

                return(Clob(clob));
            }


            if (value == null)
            {
                return(Null());
            }

            // Trivial case
            if (value is Field)
            {
                return((Field)value);
            }

            throw new NotSupportedException("Cannot build an object from the given value.");
        }
Exemple #2
0
 public static Field Clob(SqlLongString s)
 {
     return(new Field(PrimitiveTypes.Clob(s.Encoding, (int)s.Length), s));
 }