none
c# formda dinamik butonların textlerini veri tabanından alırken 2. ve 3. satırdaki veriyi nasıl alabilirim? RRS feed

  • Soru

  • komut = new MySqlCommand($"select count(*) from arkadaslar where arkadas1 = '{lblKadi.Text}' or arkadas2 = '{lblKadi.Text}';", MySQLBaglanti);
                    MySQLBaglanti.Open();
                    okuma = komut.ExecuteReader();
                    sayac = 0;
                    if (okuma.Read())
                    {
                        sayac = int.Parse(okuma[0].ToString());
                        MySQLBaglanti.Close();
                        komut = new MySqlCommand($"select arkadas2 from arkadaslar where arkadas1='{lblKadi.Text}';", MySQLBaglanti);
                        MySQLBaglanti.Open();
                        okuma = komut.ExecuteReader();
                        while (okuma.Read())
                        {
                            for (int i = 0; i < sayac; i++)
                            {
                                Button btn = new Button();         
                                btn.Text = okuma["arkadas2"].ToString();       <========
                                btn.Size = new Size(100, 30);
                                btn.Location = new Point(0, 30 * i);
                                panel1.Controls.Add(btn);
                                panel2.Location = new Point(0, 30 * (i + 1));
                            }
                        }
                    }
                    MySQLBaglanti.Close();

    Oluşturduğum butonların text ini veritabanındaki satırlardan çekmek istiyorum fakat ilk satır dışındaki verileri çekemiyorum. Listview, combobox gibi nesnelere item olarak çekilmiş her satırdaki veriyi butonların text ine nasıl çekebilirim yardımcı olur musunuz?
    30 Kasım 2020 Pazartesi 10:52

Yanıtlar

  • Aşağıdaki kodu kullanabilirsiniz. iç içe iki döngüye ihtiyacınız yok. zaten while ile her satırı geziyorsunuz.

                        sayac = 1;
                        MySQLBaglanti.Close();
                        komut = new MySqlCommand($"select arkadas2 from arkadaslar where arkadas1='{lblKadi.Text}';", MySQLBaglanti);
                        MySQLBaglanti.Open();
                        okuma = komut.ExecuteReader();
                        while (okuma.Read())
                        {
                                Button btn = new Button();         
                                btn.Text = okuma["arkadas2"].ToString();
                                btn.Size = new Size(100, 30);
                                btn.Location = new Point(0, 30 * sayac);
                                panel1.Controls.Add(btn);
                                panel2.Location = new Point(0, 30 * (sayac + 1));
                                sayac +=1;
                        }


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    • Düzenleyen Ferit Gezgil 30 Kasım 2020 Pazartesi 11:34
    • Yanıt Olarak İşaretleyen EclipseS1 30 Kasım 2020 Pazartesi 11:39
    30 Kasım 2020 Pazartesi 11:34

Tüm Yanıtlar

  • sayac = int.Parse(okuma[0].ToString()); bu satır ile ne çekiyorsunuz? daima sıfır dönüyor gibi.

     sayac = okuma.FieldCount;
                        MySQLBaglanti.Close();
                        komut = new MySqlCommand($"select arkadas2 from arkadaslar where arkadas1='{lblKadi.Text}';", MySQLBaglanti);
                        MySQLBaglanti.Open();
                        okuma = komut.ExecuteReader();
                        while (okuma.Read())
                        {
                            for (int i = 0; i < sayac; i++)
                            {
                                Button btn = new Button();         
                                btn.Text = okuma["arkadas2"].ToString();
                                btn.Size = new Size(100, 30);
                                btn.Location = new Point(0, 30 * i);
                                panel1.Controls.Add(btn);
                                panel2.Location = new Point(0, 30 * (i + 1));
                            }
                        }


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    30 Kasım 2020 Pazartesi 11:14
  • "sayac = int.Parse(okuma[0].ToString());"  burada 4 değeri dönüyor for döngüsünde kullanabilmek için count ile kaç satır bulduğunu alıyorum textbox a yazdırdım orada 0 mu dönüyor diye teyit etmek için daha sonra 4 tane buton oluşuyor fakat arkadas2 sütunundaki ilk veriyi alıp 4 butonunda textine ilk veriyi yazıyor. Burada arkadas2 sütunundaki 2. satırdaki veriyi alıp 2. oluşan butonun textine yazamıyorum.
    30 Kasım 2020 Pazartesi 11:22
  • Aşağıdaki kodu kullanabilirsiniz. iç içe iki döngüye ihtiyacınız yok. zaten while ile her satırı geziyorsunuz.

                        sayac = 1;
                        MySQLBaglanti.Close();
                        komut = new MySqlCommand($"select arkadas2 from arkadaslar where arkadas1='{lblKadi.Text}';", MySQLBaglanti);
                        MySQLBaglanti.Open();
                        okuma = komut.ExecuteReader();
                        while (okuma.Read())
                        {
                                Button btn = new Button();         
                                btn.Text = okuma["arkadas2"].ToString();
                                btn.Size = new Size(100, 30);
                                btn.Location = new Point(0, 30 * sayac);
                                panel1.Controls.Add(btn);
                                panel2.Location = new Point(0, 30 * (sayac + 1));
                                sayac +=1;
                        }


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    • Düzenleyen Ferit Gezgil 30 Kasım 2020 Pazartesi 11:34
    • Yanıt Olarak İşaretleyen EclipseS1 30 Kasım 2020 Pazartesi 11:39
    30 Kasım 2020 Pazartesi 11:34
  • Çok teşekkür ederim iyi çalışmalar :).
    30 Kasım 2020 Pazartesi 11:39