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
\r
29 /// Summary description for OdbcColumn.
\r
31 internal class OdbcColumn
\r
33 internal string ColumnName;
\r
34 internal OdbcType OdbcType;
\r
35 private SQL_TYPE _sqlType = SQL_TYPE.UNASSIGNED;
36 private SQL_C_TYPE _sqlCType = SQL_C_TYPE.UNASSIGNED;
37 internal bool AllowDBNull;
\r
38 internal int MaxLength;
\r
39 internal int Digits;
\r
40 internal object Value;
\r
42 internal OdbcColumn(string Name, OdbcType Type)
\r
44 this.ColumnName=Name;
\r
45 this.OdbcType=Type;
\r
52 internal OdbcColumn(string Name, SQL_TYPE type)
64 internal Type DataType
\r
70 case OdbcType.TinyInt:
\r
71 return typeof(System.Byte);
\r
72 case OdbcType.BigInt:
\r
73 return typeof(System.Int64);
\r
74 case OdbcType.Image:
\r
75 case OdbcType.VarBinary:
\r
76 case OdbcType.Binary:
\r
77 return typeof(byte[]);
\r
79 return typeof(bool);
\r
80 case OdbcType.NChar:
\r
82 return typeof(string);
\r
84 case OdbcType.Timestamp:
\r
85 case OdbcType.DateTime:
\r
87 case OdbcType.SmallDateTime:
\r
88 return typeof(DateTime);
\r
89 case OdbcType.Decimal:
\r
90 return typeof(Decimal);
\r
91 case OdbcType.Numeric:
\r
92 case OdbcType.Double:
\r
93 return typeof(Double);
\r
95 return typeof(System.Int32);
\r
97 case OdbcType.NText:
\r
98 case OdbcType.NVarChar:
\r
99 case OdbcType.VarChar:
\r
100 return typeof(string);
\r
101 case OdbcType.Real:
\r
102 return typeof(float);
\r
103 case OdbcType.SmallInt:
\r
104 return typeof(System.Int16);
\r
105 case OdbcType.UniqueIdentifier:
\r
106 return typeof(Guid);
\r
108 throw new InvalidCastException();
\r
112 internal bool IsDateType
\r
118 case OdbcType.Time:
\r
119 case OdbcType.Timestamp:
\r
120 case OdbcType.DateTime:
\r
121 case OdbcType.Date:
\r
122 case OdbcType.SmallDateTime:
\r
130 internal bool IsStringType
\r
136 case OdbcType.Char:
\r
137 case OdbcType.Text:
\r
138 case OdbcType.NText:
\r
139 case OdbcType.NVarChar:
\r
140 case OdbcType.VarChar:
\r
148 internal bool IsVariableSizeType {
153 case OdbcType.Binary :
154 case OdbcType.VarBinary :
155 case OdbcType.Image :
163 internal SQL_TYPE SqlType
166 if ( _sqlType == SQL_TYPE.UNASSIGNED)
167 _sqlType = OdbcTypeConverter.GetTypeMap (OdbcType).SqlType;
171 set {_sqlType = value;}
174 internal SQL_C_TYPE SqlCType
178 if ( _sqlCType == SQL_C_TYPE.UNASSIGNED)
179 _sqlCType = OdbcTypeConverter.GetTypeMap (OdbcType).NativeType;
182 set {_sqlCType = value;}
185 internal void UpdateTypes (SQL_TYPE sqlType)
188 OdbcTypeMap map = OdbcTypeConverter.GetTypeMap (SqlType);
189 OdbcType = map.OdbcType;
190 SqlCType = map.NativeType;