|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
convert DataColumn.GetType() into a DbType or SqlDbType?I have a DataColumn, want to derive the DbType. I can do column.GetType()
but that's a system type, not a db type. How do I convert it to the corresponding type? Thanks much! Chris B. Hi Chris Bordeman,
Its not possible to get the DBType via GetType(). You need to have a mapping to get the relevent type. For eg, private static Hashtable dbTypeTable; private SqlDbType ConvertToDbType(Type t) { if(dbTypeTable == null) { dbTypeTable = new Hashtable(); dbTypeTable.Add(typeof(System.Boolean), SqlDbType.Bit); dbTypeTable.Add(typeof(System.Int16), SqlDbType.SmallInt); dbTypeTable.Add(typeof(System.Int32), SqlDbType.Int); dbTypeTable.Add(typeof(System.Int64), SqlDbType.BigInt); dbTypeTable.Add(typeof(System.Double), SqlDbType.Float); dbTypeTable.Add(typeof(System.Decimal), SqlDbType.Decimal); dbTypeTable.Add(typeof(System.String), SqlDbType.VarChar); dbTypeTable.Add(typeof(System.DateTime), SqlDbType.DateTime); dbTypeTable.Add(typeof(System.Byte[]), SqlDbType.VarBinary); dbTypeTable.Add(typeof(System.Guid), SqlDbType.UniqueIdentifier); } SqlDbType dbtype; try { dbtype = (SqlDbType)dbTypeTable[t]; } catch { dbtype = SqlDbType.Variant; } return dbtype; } can be used to get the type. Cheers, Chester Show quote "Chris Bordeman" wrote: > I have a DataColumn, want to derive the DbType. I can do column.GetType() > but that's a system type, not a db type. How do I convert it to the > corresponding type? > > Thanks much! > > Chris B. > > > Gotcha, thanks for the mappings.
Show quote "Chester" <chestermr@community.nospam> wrote in message news:08FDC800-AF84-4D12-8644-A1B76D807734@microsoft.com... > Hi Chris Bordeman, > > Its not possible to get the DBType via GetType(). You need to have a > mapping > to get the relevent type. For eg, > > private static Hashtable dbTypeTable; > > private SqlDbType ConvertToDbType(Type t) > { > if(dbTypeTable == null) > { > dbTypeTable = new Hashtable(); > dbTypeTable.Add(typeof(System.Boolean), SqlDbType.Bit); > dbTypeTable.Add(typeof(System.Int16), SqlDbType.SmallInt); > dbTypeTable.Add(typeof(System.Int32), SqlDbType.Int); > dbTypeTable.Add(typeof(System.Int64), SqlDbType.BigInt); > dbTypeTable.Add(typeof(System.Double), SqlDbType.Float); > dbTypeTable.Add(typeof(System.Decimal), SqlDbType.Decimal); > dbTypeTable.Add(typeof(System.String), SqlDbType.VarChar); > dbTypeTable.Add(typeof(System.DateTime), SqlDbType.DateTime); > dbTypeTable.Add(typeof(System.Byte[]), SqlDbType.VarBinary); > dbTypeTable.Add(typeof(System.Guid), SqlDbType.UniqueIdentifier); > } > SqlDbType dbtype; > try > { > dbtype = (SqlDbType)dbTypeTable[t]; > } > catch > { > dbtype = SqlDbType.Variant; > } > return dbtype; > } > > can be used to get the type. > > Cheers, > Chester > > > "Chris Bordeman" wrote: > >> I have a DataColumn, want to derive the DbType. I can do >> column.GetType() >> but that's a system type, not a db type. How do I convert it to the >> corresponding type? >> >> Thanks much! >> >> Chris B. >> >> >> Hi Chester,
I was also trying to do the same in my application. But i got stuck with few things. Like if you have a currency column or a nvarchar column the gettype function will return you decimal and string respectively. Just wanted to check if you know have a work around for this. Thanks, Rahul Chester wrote: Show quote > Hi Chris Bordeman, > > Its not possible to get the DBType via GetType(). You need to have a mapping > to get the relevent type. For eg, > > private static Hashtable dbTypeTable; > > private SqlDbType ConvertToDbType(Type t) > { > if(dbTypeTable == null) > { > dbTypeTable = new Hashtable(); > dbTypeTable.Add(typeof(System.Boolean), SqlDbType.Bit); > dbTypeTable.Add(typeof(System.Int16), SqlDbType.SmallInt); > dbTypeTable.Add(typeof(System.Int32), SqlDbType.Int); > dbTypeTable.Add(typeof(System.Int64), SqlDbType.BigInt); > dbTypeTable.Add(typeof(System.Double), SqlDbType.Float); > dbTypeTable.Add(typeof(System.Decimal), SqlDbType.Decimal); > dbTypeTable.Add(typeof(System.String), SqlDbType.VarChar); > dbTypeTable.Add(typeof(System.DateTime), SqlDbType.DateTime); > dbTypeTable.Add(typeof(System.Byte[]), SqlDbType.VarBinary); > dbTypeTable.Add(typeof(System.Guid), SqlDbType.UniqueIdentifier); > } > SqlDbType dbtype; > try > { > dbtype = (SqlDbType)dbTypeTable[t]; > } > catch > { > dbtype = SqlDbType.Variant; > } > return dbtype; > } > > can be used to get the type. > > Cheers, > Chester > > > "Chris Bordeman" wrote: > > > I have a DataColumn, want to derive the DbType. I can do column.GetType() > > but that's a system type, not a db type. How do I convert it to the > > corresponding type? > > > > Thanks much! > > > > Chris B. > > > > > > Hi Chester,
I was also trying to do the same in my application. But i got stuck with few things. Like if you have a currency column or a nvarchar column the gettype function will return you decimal and string respectively. Just wanted to check if you know any work-around for this. Thanks, Rahul Chester wrote: Show quote > Hi Chris Bordeman, > > Its not possible to get the DBType via GetType(). You need to have a mapping > to get the relevent type. For eg, > > private static Hashtable dbTypeTable; > > private SqlDbType ConvertToDbType(Type t) > { > if(dbTypeTable == null) > { > dbTypeTable = new Hashtable(); > dbTypeTable.Add(typeof(System.Boolean), SqlDbType.Bit); > dbTypeTable.Add(typeof(System.Int16), SqlDbType.SmallInt); > dbTypeTable.Add(typeof(System.Int32), SqlDbType.Int); > dbTypeTable.Add(typeof(System.Int64), SqlDbType.BigInt); > dbTypeTable.Add(typeof(System.Double), SqlDbType.Float); > dbTypeTable.Add(typeof(System.Decimal), SqlDbType.Decimal); > dbTypeTable.Add(typeof(System.String), SqlDbType.VarChar); > dbTypeTable.Add(typeof(System.DateTime), SqlDbType.DateTime); > dbTypeTable.Add(typeof(System.Byte[]), SqlDbType.VarBinary); > dbTypeTable.Add(typeof(System.Guid), SqlDbType.UniqueIdentifier); > } > SqlDbType dbtype; > try > { > dbtype = (SqlDbType)dbTypeTable[t]; > } > catch > { > dbtype = SqlDbType.Variant; > } > return dbtype; > } > > can be used to get the type. > > Cheers, > Chester > > > "Chris Bordeman" wrote: > > > I have a DataColumn, want to derive the DbType. I can do column.GetType() > > but that's a system type, not a db type. How do I convert it to the > > corresponding type? > > > > Thanks much! > > > > Chris B. > > > > > > |
|||||||||||||||||||||||