• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana radioButtona = zmian polecenia do bazy ?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
366 wizyt
pytanie zadane 9 maja 2023 w C# przez JohnyBravo Nowicjusz (120 p.)

Witam! Jak na podstawie tego który radioButton został wybrany zmienić zapytanie select do bazy danych? 

np. 

włączony radioButoton1  ->  string sql = "SELECT * FROM tabela1 ";

włączony radioButoton2  -> string sql = "SELECT * FROM tabela2 ";

Połączenie mam:

private void button1_Click_1(object sender, EventArgs e)
        {          
            string sql = "SELECT * FROM tabela1"

            /// MySqlConnection conDataBase = new MySqlConnection(con);
            MySqlCommand cmdDatabase = new MySqlCommand(sql, con);
            MySqlDataReader myReader;
            //textBox6.Text = timeQuery;
            try
            {
                con.Open();
                myReader = cmdDatabase.ExecuteReader();
                while (myReader.Read())
                {
                   
                    tu jakies polecenia
                }
               
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
            
        }

nie wiem czy poprawny if też:

void wybierz()  
        {
            if (radioButton1.Checked)
            {
                string sql = "SELECT * FROM tabela1 ";

            }
            else if (radioButton2.Checked)
            {
                string sql = "SELECT * FROM tabela2 ";
            }

            else if (radioButton3.Checked)
            {
                string sql = "SELECT * FROM tabela3 ";
            }
            
        }

 

1 odpowiedź

+3 głosów
odpowiedź 9 maja 2023 przez Velta Maniak (52,790 p.)
edycja 10 maja 2023 przez Velta

Proponowałbym znaleźć kontrolkę z zaznaczeniem i na podstawie jej nazwy przygotować kwerendę:

RadioButton? selectedRadioButton = Controls.OfType<RadioButton>()
    .Where(control => control.Checked)
    .FirstOrDefault();

if (selectedRadioButton == null)
{
    // obsługa przypadku niezaznaczonej żadnej kontrolki
}

string queryString = selectedRadioButton.Name switch
{
    "radioButton1" => "SELECT * FROM `tabela1`",
    "radioButton2" => "SELECT * FROM `tabela2`",
    "radioButton3" => "SELECT * FROM `tabela3`"
};

Ewentualnie, jeżeli liczba porządkowa w nazwie kontrolki odpowiada nazwie tabeli, etap wybierania kwerendy mógłby zostać zamieniony z wykorzystaniem prostej obróbki tekstu:

var orderValue = Convert.ToInt32(selectedRadioButton.Name.Substring(11));
var queryString = $"SELECT * FROM `tabela{orderValue}`";

Należy zauważyć, że jeżeli liczby w nazwach kontrolek nie wychodzą poza zakres 1-9, pobranie wartości liczby można uprościć przy użyciu LINQ (dziękuję za sugestię VBService):

var orderValue = selectedRadioButton.Name.LastOrDefault();

Ewentualnie z użyciem wyrażenia regularnego:

var controlNameRegex = new Regex(@"^radioButton(\d+)$");

var orderValue = Convert.ToInt32(controlNameRegex.Match(selectedRadioButton.Name).Groups[1].Value);
var queryString = $"SELECT * FROM `tabela{orderValue}`";

Ewentualnie, przy użyciu LINQ:

var orderValue = Convert.ToInt32(new String(selectedRadioButton.Name.Where(char.IsDigit).ToArray()));
var queryString = $"SELECT * FROM `tabela{orderValue}`";

EDIT #1: Drobne techniczne.
EDIT #2: Dodano kolejne opcjonalne rozwiązanie za sugestią VBService, drobne redakcyjne.

komentarz 9 maja 2023 przez VBService Ekspert (256,320 p.)
edycja 10 maja 2023 przez VBService

Proponuje zamiast Substring(11) użyć LastOrDefault() (jeśli liczba radio button-ów nie przekroczy 9) no skoro ta część nazwy radio button-a i tak ma być częścią string-a sql to proponuje taki zapis

var orderValue = selectedRadioButton.Name.LastOrDefault();

 

proponuję jeszcze taki zapis

        private string wybierz()
        {
            RadioButton selectedRadioButton = Controls.OfType<RadioButton>()
                .Where(control => control.Checked)
                .FirstOrDefault();

            if (selectedRadioButton == null) return string.Empty;

            //var orderValue = selectedRadioButton.Name.LastOrDefault();
            //return = $"SELECT * FROM `tabela{orderValue}`";

            var orderValue = selectedRadioButton.Name.Replace("radioButton", "tabela");
            return $"SELECT * FROM `{orderValue}`";
        }

 

Podobne pytania

0 głosów
0 odpowiedzi 754 wizyt
0 głosów
1 odpowiedź 456 wizyt
pytanie zadane 1 grudnia 2017 w C# przez BeFree Początkujący (380 p.)
0 głosów
1 odpowiedź 591 wizyt
pytanie zadane 18 kwietnia 2023 w C# przez Mati336 Użytkownik (560 p.)

93,185 zapytań

142,198 odpowiedzi

322,005 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...