none
listboxtaki verileri veritabanına kaydetme RRS feed

  • Soru

  • webden veri çekip listbox a aktarıyorum.4 adet listbox ım var ve her listboxta alt alta 3 adet veri var.ben bu verileri veritabanına nasıl kaydederim.
    komut.Parameters.AddWithValue("@veri1", ListBox1.items[0].ToString());
    yaptım olmadı.textboxlara katarıp kaydetsemde olur.sorun değil.yeterki bi şekilde veritabanında hepsini tek satıra kaydedeyim.
    2 Şubat 2019 Cumartesi 11:21

Tüm Yanıtlar

  • Entity framework kullansanız daha iyi aslında , 

    Eğer tüm listbox elemanlarını tek satıra girmek istiyorsanız aşağıdaki gibi ;

     string hepsi=null;
                listBox4.Items.Cast<string>().ToList().ForEach(x => hepsi += x);
         
                using (SqlConnection conn = new SqlConnection("Data Source=" + dataFile))
                using (SqlCommand sql = new SqlCommand(@"INSERT INTO Test(Kaydet) VALUES (@Kaydet)", conn))
                {
    
    
    
    
                    conn.Open();
    
    
                    sql.Parameters.AddWithValue("@Kaydey", hepsi);
    
    
                    sql.ExecuteNonQuery();
    
    
    
    
                    conn.Close();
                }

    Yok her bir elemanı ayrı ayrı girmek istiyorsanız da aşağıdaki gibi ;

         
                using (SqlConnection conn = new SqlConnection("Data Source=" + dataFile))
                using (SqlCommand sql = new SqlCommand(@"INSERT INTO Test(Kaydet) VALUES (@Kaydet)", conn))
                {
    
    
    
    
                    conn.Open();
                    foreach (var eleman in listBox4.Items.Cast<string>())
                    {
    
                        sql.Parameters.AddWithValue("@Kaydey", eleman);
    
    
                        sql.ExecuteNonQuery();
                    }
    
    
    
    
                    conn.Close();
                }


    • Yanıt Olarak Öneren Yunus Bulduk 2 Şubat 2019 Cumartesi 13:21
    2 Şubat 2019 Cumartesi 11:55
  •  
    foreach (var item in listBox1.Items.Cast<string>())
                {
                    komut.Parameters.AddWithValue("@veri1", item[0].ToString());
                    komut.Parameters.AddWithValue("@veri2", item[1].ToString());
                    komut.Parameters.AddWithValue("@veri3", item[2].ToString());
                }

    bu şekilde düzenlediğimde komut.ExecuteNonQuery(); işaretliyerek ağğağıdaki hatayı verdi

    The variable name '@veri1' has already been declared. Variable names must be unique within a query batch or stored procedure.

    2 Şubat 2019 Cumartesi 13:16
  • foreach (var item in listBox1.Items.Cast<string>())
    {
        komut.Parameters.Clear();
        komut.Parameters.AddWithValue("@veri1", item[0].ToString());
        komut.Parameters.AddWithValue("@veri2", item[1].ToString());
        komut.Parameters.AddWithValue("@veri3", item[2].ToString());
    komut.ExecuteNonQuery(); }
    şeklinde denermisin. 

    Not: Yalnız bu kodun inanılmaz performanssız çalışacak. Birde listboxdaki değerler birbirine karışacak en son 2 sırada hata falan verecek. Çok yanlış yöntemler bunar.
     

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    2 Şubat 2019 Cumartesi 13:38
    Moderatör
  • hocam performansı çok düşecekse kullanmıyayım ben bu kodu.çünkü program 1 kere çalıştığında bu kod en az 1000 kere çalışacak.bunun yerine listboxtaki verileri sırasıyla texboxlara atsam daha mantıklı olmazmı ? .yanıtınızı okuduktan sonra listboxtaki verileri sırasıyla textboxlara nasıl aktarabileceğimi biraz araştırdım ama net bir cevap bulamadım.bu konuda yardımcı olurmusunuz hocam.
    3 Şubat 2019 Pazar 07:11
  • timer kullanarak verileri sırayla textboxa attım hocam.


    int adet = 0;

    private void timer1_Tick(object sender, EventArgs e) { if (adet != lb1a.Items.Count) { txt1.Text = lb1a.Items[adet].ToString(); txt2.Text = lb1b.Items[adet].ToString(); txt3.Text = lb2a.Items[adet].ToString(); txt4.Text = lb2k.Items[adet].ToString(); adet += 1; txt5.Text = lb1a.Items[adet].ToString(); txt6.Text = lb1k.Items[adet].ToString(); txt7.Text = lb2a.Items[adet].ToString(); txt8.Text = lb2k.Items[adet].ToString(); adet += 1; txt9.Text = lb1a.Items[adet].ToString(); txt10.Text = lb1k.Items[adet].ToString(); txt11.Text = lb2a.Items[adet].ToString(); txt12.Text = lb2k.Items[adet].ToString(); adet = 0; } else { timer1.Stop(); } }


    bu şekilde sorunumu hallettim.ilginiz ve yardımınız için çok teşekkkür ederi.emeğinize sağlık


    3 Şubat 2019 Pazar 07:21