コード例 #1
0
        private object CastToColumnType(string columnName, string value)
        {
            Guard.AgainstNull(columnName, "Column Name");

            if (string.Equals(columnName, "rowid", StringComparison.InvariantCultureIgnoreCase))
            {
                return(Convert.ToInt32(value));
            }

            if (string.Equals(columnName, "obj", StringComparison.InvariantCultureIgnoreCase))
            {
                int index = Convert.ToInt32(this.Get("rowid"));
                TableObjVariable objvariable = new TableObjVariable(this, index);
                return(geometryfactory.GetGeometryFromVariable(objvariable));
            }

            string      columntypestring = this.wrapper.Evaluate("ColumnInfo({0},{1},{2})".FormatWith(this.tableName, columnName, 3));
            int         columntypeval    = Convert.ToInt32(columntypestring);
            ColumnTypes columntype       = (ColumnTypes)columntypeval;

            switch (columntype)
            {
            case ColumnTypes.CHAR:
                return(value);

            case ColumnTypes.DECIMAL:
                return(Convert.ToDecimal(value));

            case ColumnTypes.INTEGER:
                return(Convert.ToInt32(value));

            case ColumnTypes.SMALLINT:
                return(Convert.ToInt16(value));

            case ColumnTypes.DATE:
                break;

            case ColumnTypes.LOGICAL:
                return(value == "T");

            case ColumnTypes.GRAPHIC:
                break;

            case ColumnTypes.FLOAT:
                return(Convert.ToDouble(value));

            case ColumnTypes.TIME:
                break;

            case ColumnTypes.DATETIME:
                DateTime date;
                bool     parsed = DateTime.TryParseExact(value,
                                                         "yyyyMMddHHmmssfff",
                                                         null,
                                                         System.Globalization.DateTimeStyles.None,
                                                         out date);
                if (parsed)
                {
                    return(date);
                }
                else
                {
                    return(null);
                }

            default:
                return(null);
            }
            return(null);
        }