如何发现一个DataColumn的底层数据类型是xml

4
我有一个SQL Server数据表,其中包含一个xml列。我使用SqlDataAdapter类的Fill方法运行选择查询。执行后,该列的类型为string
我想知道如何从由Fill方法实例化的DataTable中确定实际的SQL Server数据类型(在本例中为xml)。
我不能使用SqlDataReader(它具有返回SQL Server数据类型信息的GetSchemaTable方法),必须使用SqlDataAdapter/DataTable。像这样做:
DataTableReader reader = new DataTableReader(table);
DataTable schemaTable = reader.GetSchemaTable();

由于它似乎也不包含SQL Server数据类型信息,因此这也没有什么帮助。


您可以通过执行以下语句来“检查”SQL Server目录视图中列的数据类型:SELECT user_type_id FROM sys.columns WHERE object_id = OBJECT_ID('Person.Person')。如果该值为241,则它是一个SQL Server数据类型为XML的列(这些类型在sys.types中定义)。 - marc_s
那意味着我必须发出另一个查询。有没有办法不去SQL,而是依赖于获取的数据表?此外,我可能正在执行返回数据的存储过程,但事先不知道它属于哪个表/模式。 - user1417808
1个回答

5

SqlDataAdapter有一个名为ReturnProviderSpecificTypes的属性,如果将其设置为true,则GetSchemaTable()应该告诉您列的类型是typeof(SqlXml)而不是typeof(string)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接