a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
195 lines
5.1 KiB
C#
195 lines
5.1 KiB
C#
|
|
//
|
|
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining
|
|
// a copy of this software and associated documentation files (the
|
|
// "Software"), to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish,
|
|
// distribute, sublicense, and/or sell copies of the Software, and to
|
|
// permit persons to whom the Software is furnished to do so, subject to
|
|
// the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be
|
|
// included in all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
using System;
|
|
|
|
namespace System.Data.Odbc
|
|
{
|
|
/// <summary>
|
|
/// Summary description for OdbcColumn.
|
|
/// </summary>
|
|
internal class OdbcColumn
|
|
{
|
|
internal string ColumnName;
|
|
internal OdbcType OdbcType;
|
|
private SQL_TYPE _sqlType = SQL_TYPE.UNASSIGNED;
|
|
private SQL_C_TYPE _sqlCType = SQL_C_TYPE.UNASSIGNED;
|
|
internal bool AllowDBNull;
|
|
internal int MaxLength;
|
|
internal int Digits;
|
|
internal object Value;
|
|
|
|
internal OdbcColumn (string Name, OdbcType Type)
|
|
{
|
|
this.ColumnName = Name;
|
|
this.OdbcType = Type;
|
|
AllowDBNull = false;
|
|
MaxLength = 0;
|
|
Digits = 0;
|
|
Value = null;
|
|
}
|
|
|
|
internal OdbcColumn (string Name, SQL_TYPE type)
|
|
{
|
|
this.ColumnName = Name;
|
|
AllowDBNull = false;
|
|
MaxLength = 0;
|
|
Digits = 0;
|
|
Value = null;
|
|
UpdateTypes (type);
|
|
|
|
}
|
|
|
|
|
|
internal Type DataType
|
|
{
|
|
get
|
|
{
|
|
switch (OdbcType)
|
|
{
|
|
case OdbcType.TinyInt:
|
|
return typeof (System.Byte);
|
|
case OdbcType.BigInt:
|
|
return typeof (System.Int64);
|
|
case OdbcType.Image:
|
|
case OdbcType.VarBinary:
|
|
case OdbcType.Binary:
|
|
return typeof (byte[]);
|
|
case OdbcType.Bit:
|
|
return typeof (bool);
|
|
case OdbcType.NChar:
|
|
case OdbcType.Char:
|
|
return typeof (string);
|
|
case OdbcType.Time:
|
|
return typeof (TimeSpan);
|
|
case OdbcType.Timestamp:
|
|
case OdbcType.DateTime:
|
|
case OdbcType.Date:
|
|
case OdbcType.SmallDateTime:
|
|
return typeof (DateTime);
|
|
case OdbcType.Decimal:
|
|
case OdbcType.Numeric:
|
|
return typeof (Decimal);
|
|
case OdbcType.Double:
|
|
return typeof (Double);
|
|
case OdbcType.Int:
|
|
return typeof (System.Int32);
|
|
case OdbcType.Text:
|
|
case OdbcType.NText:
|
|
case OdbcType.NVarChar:
|
|
case OdbcType.VarChar:
|
|
return typeof (string);
|
|
case OdbcType.Real:
|
|
return typeof (float);
|
|
case OdbcType.SmallInt:
|
|
return typeof (System.Int16);
|
|
case OdbcType.UniqueIdentifier:
|
|
return typeof (Guid);
|
|
}
|
|
throw new InvalidCastException();
|
|
}
|
|
}
|
|
|
|
internal bool IsDateType
|
|
{
|
|
get
|
|
{
|
|
switch (OdbcType)
|
|
{
|
|
case OdbcType.Time:
|
|
case OdbcType.Timestamp:
|
|
case OdbcType.DateTime:
|
|
case OdbcType.Date:
|
|
case OdbcType.SmallDateTime:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
internal bool IsStringType
|
|
{
|
|
get
|
|
{
|
|
switch (OdbcType)
|
|
{
|
|
case OdbcType.Char:
|
|
case OdbcType.Text:
|
|
case OdbcType.NText:
|
|
case OdbcType.NVarChar:
|
|
case OdbcType.VarChar:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
internal bool IsVariableSizeType {
|
|
get {
|
|
if (IsStringType)
|
|
return true;
|
|
switch (OdbcType) {
|
|
case OdbcType.Binary :
|
|
case OdbcType.VarBinary :
|
|
case OdbcType.Image :
|
|
return true;
|
|
default :
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
internal SQL_TYPE SqlType
|
|
{
|
|
get {
|
|
if ( _sqlType == SQL_TYPE.UNASSIGNED)
|
|
_sqlType = OdbcTypeConverter.GetTypeMap (OdbcType).SqlType;
|
|
return _sqlType;
|
|
}
|
|
|
|
set {_sqlType = value;}
|
|
}
|
|
|
|
internal SQL_C_TYPE SqlCType
|
|
{
|
|
get {
|
|
|
|
if ( _sqlCType == SQL_C_TYPE.UNASSIGNED)
|
|
_sqlCType = OdbcTypeConverter.GetTypeMap (OdbcType).NativeType;
|
|
return _sqlCType;
|
|
}
|
|
set {_sqlCType = value;}
|
|
}
|
|
|
|
internal void UpdateTypes (SQL_TYPE sqlType)
|
|
{
|
|
SqlType = sqlType;
|
|
OdbcTypeMap map = OdbcTypeConverter.GetTypeMap (SqlType);
|
|
OdbcType = map.OdbcType;
|
|
SqlCType = map.NativeType;
|
|
}
|
|
}
|
|
}
|