C# 如何获取列的数据类型?

C# 如何获取列的数据类型?,c#,odbc,datareader,idatareader,C#,Odbc,Datareader,Idatareader,我使用Northwind示例数据库和ODBC。对于我的C#应用程序,我希望将列的数据类型作为类型对象(而不是字符串),因为出于某些原因,我希望使用该类型 示例(取自Northwind)-表OrderDetails包含以下列: OrderID类型int(11)、ProductID类型int(11)、单价类型float等 我想得到这样的东西: Type dataType = (the data type of OrderID) 非:字符串数据类型=reader.GetString(dataTy

我使用Northwind示例数据库和ODBC。对于我的C#应用程序,我希望将列的数据类型作为类型对象(而不是字符串),因为出于某些原因,我希望使用该类型

示例(取自Northwind)-表OrderDetails包含以下列:

OrderID类型int(11)、ProductID类型int(11)、单价类型float等

我想得到这样的东西:

Type dataType = (the data type of OrderID)  
非:
字符串数据类型=reader.GetString(dataTypeOrdinal);//我可以毫无问题地得到它。

下面是代码片段:(我在代码中还添加了一些详细的注释)

非常感谢您的帮助和提示。提前发送Thx。

您可以试试

var type = reader.GetFieldType(columnNameOrdinal);
或者,如果需要特定于提供程序的类型,可以使用

var providerSpecificType=    reader.GetProviderSpecificFieldType(int ordinal); 


我尝试GetProviderSpecificFieldType,但出现错误:“System.Data.IDataReader”不包含“GetProviderSpecificFieldType”的定义,并且找不到接受类型为“System.Data.IDataReader”的第一个参数的扩展方法“GetProviderSpecificFieldType”(是否缺少using指令或程序集引用?)您使用的是哪种类型的提供程序?据我所知,它是Sql提供程序。您建议使用哪种方式使GetProviderSpecificFieldType工作?如果是SQLServer,它应该可以工作,因为它完全受microsoft支持
var providerSpecificType=    reader.GetProviderSpecificFieldType(int ordinal); 
Gets an Object that is a representation of the underlying provider-specific field type.