Ich habe eine SQL-Abfrage, die ich aus einer Konfigurationsdatei erhalte, diese Abfrage enthält normalerweise 3-6 Verknüpfungen.
Ich muss zur Laufzeit auf der Basis der von SqlDataReader dargestellten Ergebnismenge den Namen der Tabelle für jede Spalte finden.
Hier sind einige Dinge, die nicht funktionieren:
Ich verwende .net 3.5SP1 / C # / SQL Server 2008 in einer Konsolenanwendung.
BEARBEITEN: Ich weiß, das ist nicht in allen Fällen möglich, da eine "Spalte" aus mehreren Tabellen, einer Funktion oder sogar einem konstanten Ausdruck kombiniert werden kann - ich suche nach etwas, das funktioniert der einfache Fall.
BEARBEITEN 2: Herausgefunden, warum es nicht funktionierte - Sie können SqlDataReader.GetSchemaTable verwenden, um Tabelleninformationen abzurufen, aber Sie müssen CommandBehavior auf KeyInfo setzen, und zwar im ExecuteReader-Aufruf:
%Vor%Ich weiß nicht, ob diese Informationen verfügbar sind. Insbesondere stammen nicht alle Spalten einer Ergebnismenge aus einer Tabelle. Aus relationaler Sicht sind Tabellen und Resultsets identisch.
Diese unbeantwortete Frage für stackoverflow verwendet SqlDataReader.GetSchemaTable, um die Tabelle abzurufen Name. Ihr Problem besteht darin, dass sie den tatsächlichen Tabellennamen und nicht den Aliasnamen der Tabelle zurückgibt. Ich bin mir nicht sicher, ob das mit deinem SQL funktioniert, aber ich dachte, ich würde es dich nur für den Fall wissen lassen.
Tags und Links .net sql-server c# sqldatareader