Ho una query SQL che ottengo da un file di configurazione, questa query contiene solitamente 3-6 join.Come ottenere il nome della tabella di una colonna da SqlDataReader
Ho bisogno di trovare in fase di esecuzione, in base al set di risultati rappresentato da SqlDataReader, per trovare il nome della tabella per ogni colonna.
Ecco alcune cose che non funzionano:
- SqlDataReader.GetName restituisce il nome di colonna, ma non il nome della tabella.
- SqlDataReader.GetSchemaTable restituisce una tabella di dati con informazioni sulla colonna, ma tutti i nomi delle tabelle sono nulli.
- L'interrogazione di information_schema non aiuta perché ho bisogno di dati sui risultati della query corrente (e i nomi delle colonne non sono univoci - ci sono colonne con lo stesso nome in tabelle diverse).
Utilizzo .net 3.5SP1/C#/SQL Server 2008 in un'applicazione console.
EDIT: So che questo non è possibile in tutti i casi poiché una "colonna" può essere combinata da più tabelle, una funzione o anche un'espressione costante - Sto cercando qualcosa che funzioni nel caso semplice.
EDIT 2: scoperto perché non ha funzionato - È possibile utilizzare SqlDataReader.GetSchemaTable per ottenere informazioni tavolo, ma è necessario impostare CommandBehavior a KeyInfo, hai fatto nella chiamata ExecuteReader:
reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
io non sono sicuro che si sta andando ad essere in grado di farlo sulla base di risultati. Probabilmente avrai bisogno di analizzare SQL, perché ne hai bisogno? – Paddy