我有一個從配置文件中得到的SQL查詢,這個查詢通常包含3-6個連接。如何從SqlDataReader獲取列名的表名
我需要在運行時根據SqlDataReader表示的結果集查找每列的表名。
這裏有一些事情,不工作:
- SqlDataReader.GetName返回列名而不是表名。
- SqlDataReader.GetSchemaTable返回一個包含列信息的數據表 - 但所有的表名都是空的。
- 查詢information_schema沒有幫助,因爲我需要有關當前查詢結果的數據(並且列名不唯一 - 在不同表中有相同名稱的列)。
我在控制檯應用程序中使用.net 3.5SP1/C#/ SQL Server 2008。
編輯:我知道這是不可能的所有情況下,因爲「列」可以從多個表,一個函數,甚至是一個常量表達式 - 我正在尋找的東西,在簡單的情況下工作。
編輯2:找到了原因沒有奏效 - 您可以使用SqlDataReader.GetSchemaTable獲取表信息,但你要的CommandBehavior設置的密鑰信息,你做的是,在通話的ExecuteReader:
reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
我不知道你要能夠根據結果集來做到這一點。你可能需要解析SQL,爲什麼你需要這個? – Paddy 2010-06-23 15:10:18