如何从SqlDataReader获取列的表名

Nir*_*Nir 8 .net c# sql-server sqldatareader

我从配置文件中获得了一个SQL查询,这个查询通常包含3-6个连接.

我需要在运行时根据SqlDataReader表示的结果集找到每个列的表名.

以下是一些不起作用的东西:

  • SqlDataReader.GetName返回列名但不返回表名.
  • SqlDataReader.GetSchemaTable返回包含列信息的数据表 - 但所有表名都为null.
  • 查询information_schema没有帮助,因为我需要有关当前查询结果的数据(并且列名不是唯一的 - 在不同的表中有相同名称的列).

我在控制台应用程序中使用.net 3.5SP1/C#/ SQL Server 2008.

编辑:我知道这对所有情况都不可能,因为"列"可以从多个表,一个函数甚至一个常量表达式组合 - 我正在寻找一些在简单情况下有用的东西.

编辑2:找出它无法工作的原因 - 您可以使用SqlDataReader.GetSchemaTable获取表信息,但是您必须将CommandBehavior设置为KeyInfo,您可以在ExecuteReader调用中执行此操作:

reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
Run Code Online (Sandbox Code Playgroud)

Nir*_*Nir 10

您可以使用SqlDataReader.GetSchemaTable来获取表信息,但是您必须将CommandBehavior设置为KeyInfo,您可以在ExecuteReader调用中执行此操作:

reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
Run Code Online (Sandbox Code Playgroud)