Mam zapytanie SQL, które otrzymuję z pliku konfiguracyjnego, to zapytanie zwykle zawiera 3-6 złączeń.Jak uzyskać nazwę tabeli kolumny z SqlDataReader
Muszę znaleźć w czasie wykonywania, w oparciu o zestaw wyników reprezentowany przez SqlDataReader, aby znaleźć nazwę tabela dla każdej kolumny.
Oto kilka rzeczy, które nie działają:
- SqlDataReader.GetName zwraca nazwę kolumny, ale nie nazwa tabeli.
- SqlDataReader.GetSchemaTable zwraca tabelę danych z informacjami o kolumnie - ale wszystkie nazwy tabel mają wartość null.
- Zapytanie information_schema nie pomaga, ponieważ potrzebuję danych o wynikach bieżącego zapytania (a nazwy kolumn nie są unikalne - w różnych tabelach znajdują się kolumny o tej samej nazwie).
Używam .net 3.5SP1/C#/SQL Server 2008 w aplikacji konsoli.
EDIT: wiem, że to nie jest możliwe dla wszystkich przypadkach ponieważ „kolumna” można łączyć z wielu tabel, funkcja lub nawet stałą słowa - Szukam czegoś, co działa w prostym przypadku.
EDIT 2: Okazało się, dlaczego to nie działa - można użyć SqlDataReader.GetSchemaTable aby uzyskać informacje na stolik, ale trzeba ustawić CommandBehavior do KeyInfo, możesz to zrobić w zaproszeniu ExecuteReader:
reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
nie jestem pewien, że będziesz w stanie to zrobić na podstawie wynikowego. Prawdopodobnie będziesz musiał przeanalizować SQL - dlaczego tego potrzebujesz? – Paddy