отбор из базы по содержимому

Есть таблица в базе содержимое ее таково:

введите сюда описание изображения

все колонки button имеют тип булиан tinyint(1) в основной программе пытаюсь сделать запрос и вытащить по id содержимое ячеек, что бы в зависимости от 1 или 0 выключить видимость кнопок на форме.

есть код, который вытаскивает наименования колонок, как теперь сделать отбор что бы выбрать наименования колонок содержимое которых =1:

        MySqlCommand cmd;
        MySqlDataReader dr;
        MySqlConnection conn2 = DBUtils.GetDBConnection();
        cmd = new MySqlCommand();
        cmd.Connection = conn2;
        DataTable schema = null;
        {
            using (var schemaCommand = new MySql.Data.MySqlClient.MySqlCommand("SELECT * FROM subscribe WHERE id='A320M-H-CF191289456911'", conn2))
            {
                conn2.Open();
                using (var reader = schemaCommand.ExecuteReader(CommandBehavior.SchemaOnly))
                {
                    schema = reader.GetSchemaTable();
                }
            }
        }
        foreach (DataRow col in schema.Rows)
        {
        //return col.Field<String>("ColumnName");// возврат имени колонок
        cmd.CommandText = "SELECT * FROM subscribe WHERE id='A320M-H-CF191289456911'  ";
        // вот собственно и вопрос как отобрать ?
        dr = cmd.ExecuteReader();
            if (dr.Read())
            {

               MessageBox.Show(col.Field<String>("ColumnName"));
               MessageBox.Show("успех!");
            }
            else
            {
            }
            dr.Close();
        }

Ответы (1 шт):

Автор решения: Виктор Юхимчук

решил элегантнее, для начала списком вытаскиваю наименования лист всех колонок -

public  List<string> gelstring()
    {
       
            string index_;
            string name;
            List<string> ret = new List<string>();
            MySqlConnection connection = подключение к базе
            try
            {
                string sqlExpression = "SELECT * FROM *где-то* WHERE id = *что-то*' ";
                connection.Open();
                MySqlCommand command = new MySqlCommand(sqlExpression, connection);
                MySqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    for (int i = 1; i < reader.FieldCount; i++)
                    {
                        index_ = reader.GetValue(i).ToString();
                        name = reader.GetName(i).ToString();
                        ret.Add(name);
                        ret.Add(index_);
                    }
                }

                return ret;
            }
            finally
            {
                connection.Close();
            }

       

        }

ну и вторая функция, которая берет получившийся список и в зависимости от 1 / 0 хранящейся по наименованию колонки совпавшей с котролами на форме вкл / выкл

 public void subscribe_controls(Form forma)
 {
 string[] array_name = gelstring().Select(n => n.ToString()).ToArray();


        for (int i = 0; i < gelstring().Count; i++)
        {
            for (int j = 0; j < forma.Controls.Count; j++)
            {

                if (forma.Controls[j].Name == array_name[i])
                {
                    i++;
                    forma.Controls[j].Visible = Convert.ToBoolean(array_name[i]);

                }
            }
        }
   }
→ Ссылка