Показать столбцы работает только для реальных таблиц и представлений, но не для запросов.
Поскольку вы упоминаете C #, вы, вероятно, используете ADO.NET? Вы можете напрямую заполнить таблицу данных, в которой указаны типы данных и имена столбцов.
DbConnection conn = null;
DbConnection conn = null;
DbCommand cmd = null;
DbDataAdapter da = null;
DataTable tbl = new DataTable();
conn = new MySqlConnection(connectionString);
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = query;
da = new MySqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(tbl);
Если вы хотите получить только имена столбцов, вы можете получить результат, используя вместо этого DataReader:
DbDataReader dbReader = cmd.ExecuteReader();
for (int i = 0; i < dbReader.FieldCount; i++) {
Type colType = dbReader.GetFieldType(i);
String colName = dbReader.GetName(i);
}
DbDataReader также имеет .GetSchemaTable (), который возвращает DataTable, описывающий метаданные результата.