Tengo una consulta SQL que obtengo de un archivo de configuración, esta consulta generalmente contiene 3-6 combinaciones.Cómo obtener el nombre de la tabla de una columna de SqlDataReader
Necesito encontrar en tiempo de ejecución, en función del conjunto de resultados representado por SqlDataReader, para encontrar el nombre de la tabla para cada columna.
Estas son algunas cosas que no funcionan:
- SqlDataReader.GetName devuelve el nombre de la columna, pero no el nombre de la tabla.
- SqlDataReader.GetSchemaTable devuelve una tabla de datos con información de columna, pero todos los nombres de tabla son nulos.
- Consultar information_schema no ayuda porque necesito datos sobre los resultados de la consulta actual (y los nombres de las columnas no son únicos, hay columnas con el mismo nombre en diferentes tablas).
Estoy usando .net 3.5SP1/C#/SQL Server 2008 en una aplicación de consola.
EDIT: Sé que esto no es posible en todos los casos ya que una "columna" se puede combinar de varias tablas, una función o incluso una expresión constante - Estoy buscando algo que funcione en el caso simple.
EDIT 2: descubrí por qué no funcionó - Se puede usar SqlDataReader.GetSchemaTable para obtener información de la tabla, pero hay que establecer CommandBehavior a KeyInfo, lo hace en la llamada ExecuteReader:
reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
No estoy seguro de que vas a ser capaz de hacer esto con base en el conjunto de resultados. Probablemente necesite analizar el SQL en su lugar, ¿por qué lo necesita? – Paddy