3 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
5 // Permission is hereby granted, free of charge, to any person obtaining
6 // a copy of this software and associated documentation files (the
7 // "Software"), to deal in the Software without restriction, including
8 // without limitation the rights to use, copy, modify, merge, publish,
9 // distribute, sublicense, and/or sell copies of the Software, and to
10 // permit persons to whom the Software is furnished to do so, subject to
11 // the following conditions:
13 // The above copyright notice and this permission notice shall be
14 // included in all copies or substantial portions of the Software.
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 namespace System.Data.Odbc
29 /// Summary description for OdbcColumn.
31 internal class OdbcColumn
33 internal string ColumnName;
34 internal OdbcType OdbcType;
35 private SQL_TYPE _sqlType = SQL_TYPE.UNASSIGNED;
36 private SQL_C_TYPE _sqlCType = SQL_C_TYPE.UNASSIGNED;
37 internal bool AllowDBNull;
38 internal int MaxLength;
40 internal object Value;
42 internal OdbcColumn (string Name, OdbcType Type)
44 this.ColumnName = Name;
52 internal OdbcColumn (string Name, SQL_TYPE type)
54 this.ColumnName = Name;
64 internal Type DataType
70 case OdbcType.TinyInt:
71 return typeof (System.Byte);
73 return typeof (System.Int64);
75 case OdbcType.VarBinary:
77 return typeof (byte[]);
82 return typeof (string);
84 return typeof (TimeSpan);
85 case OdbcType.Timestamp:
86 case OdbcType.DateTime:
88 case OdbcType.SmallDateTime:
89 return typeof (DateTime);
90 case OdbcType.Decimal:
91 case OdbcType.Numeric:
92 return typeof (Decimal);
94 return typeof (Double);
96 return typeof (System.Int32);
99 case OdbcType.NVarChar:
100 case OdbcType.VarChar:
101 return typeof (string);
103 return typeof (float);
104 case OdbcType.SmallInt:
105 return typeof (System.Int16);
106 case OdbcType.UniqueIdentifier:
107 return typeof (Guid);
109 throw new InvalidCastException();
113 internal bool IsDateType
120 case OdbcType.Timestamp:
121 case OdbcType.DateTime:
123 case OdbcType.SmallDateTime:
131 internal bool IsStringType
140 case OdbcType.NVarChar:
141 case OdbcType.VarChar:
149 internal bool IsVariableSizeType {
154 case OdbcType.Binary :
155 case OdbcType.VarBinary :
156 case OdbcType.Image :
164 internal SQL_TYPE SqlType
167 if ( _sqlType == SQL_TYPE.UNASSIGNED)
168 _sqlType = OdbcTypeConverter.GetTypeMap (OdbcType).SqlType;
172 set {_sqlType = value;}
175 internal SQL_C_TYPE SqlCType
179 if ( _sqlCType == SQL_C_TYPE.UNASSIGNED)
180 _sqlCType = OdbcTypeConverter.GetTypeMap (OdbcType).NativeType;
183 set {_sqlCType = value;}
186 internal void UpdateTypes (SQL_TYPE sqlType)
189 OdbcTypeMap map = OdbcTypeConverter.GetTypeMap (SqlType);
190 OdbcType = map.OdbcType;
191 SqlCType = map.NativeType;