我有一个从配置文件中获取的SQL查询,该查询通常包含3-6个联接。

我需要在运行时基于SqlDataReader表示的结果集查找表,以查找每列的名称。

这是一些行不通的事情:

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

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

    编辑:我知道这不可能在所有情况下都可行,因为“列”可以从多个表,一个函数甚至一个常量表达式中组合出来-我正在寻找在简单情况下可行的方法。

    编辑2:找出了它不起作用的原因-您可以使用SqlDataReader.GetSchemaTable来获取表信息,但是必须将CommandBehavior设置为KeyInfo,您可以在ExecuteReader调用中进行此操作:
    reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    

    最佳答案

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

    reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    

    关于c# - 如何从SqlDataReader获取列的表名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3102902/

    10-10 17:29