Textbox dan veya başka bir yerden Listview’e girilen değerleri database imize kayıt etmek isteyebiliriz. Şöyle kısa bir senaryo ile anlatalım; kafe adisyon programında, garson masa müşteriden sipariş edilen ürünleri listview de saklayıp müşteri hesabını ödeyeceği zaman satılan ürünlerin adını ve fiyatını hesap kesiminde database’e kayıt ettirebilir. Buna benzer senaryoda kullanma babında bu uygulamayı paylaşmak istedim.
Örnek için resimdeki gibi bir arayüz formu hazırlayabilirsiniz. Buradaki amaç ilk önce textbox lardan girilen değerleri listview e kayıt etmek ardından listviewdeki tüm verileri tek hamle ile database e göndermek.
Burada coder isimli bir veritabanı bir tablo, içerinde id, adi ve soyadi kolonu bulunmakta. İlk önce textbox dan listview’e veri kayıt edelim.
[cc lang=”c#”]
private void button1_Click(object sender, EventArgs e)
{
ListViewItem lv = new ListViewItem();
lv.Text = textBox1.Text;
lv.SubItems.Add(textBox2.Text);
listView1.Items.Add(lv);
}
[/cc]
[stextbox id=”info”]Listview sınıfı nesneyi tanımladık fieldlarını doldurduk. Ardından listView1.Items.Add(lv) nesnedeki değeri listview e gönderdik. [/stextbox]
Resimdeki listview altında dbkayıt butonu ise listviewdeki değerleri tek seferde database e kayıt etmemizi sağlamakta. Buton clik ile kodlarına dalacak olursak;
[cc lang=”c#”]
private void button2_Click(object sender, EventArgs e)
{
int etkilenen = 0;
for (int i = 0; i < listView1.Items.Count; i++ ) { try { SqlConnection sql = new SqlConnection("server=.; database=coder; trusted_connection=true;"); SqlCommand cmd = new SqlCommand(); cmd.Connection = sql; string adi = listView1.Items[i].SubItems[0].Text; string soyadi = listView1.Items[i].SubItems[1].Text; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = "insert into tblkisi (adi,soyadi) values (@adi, @soyadi)"; cmd.Parameters.AddWithValue("@adi", adi); cmd.Parameters.AddWithValue("@soyadi", soyadi); sql.Open(); cmd.ExecuteNonQuery(); sql.Close(); } catch (Exception) { MessageBox.Show("Kayıt edilmedi"); } } if (etkilenen != 0) // Açıklama 11 : { MessageBox.Show("Kayıt edilmedi !!!"); } else { MessageBox.Show("Kayıt edildi..."); } } [/cc] For döngüsü ile listview eklenmiş satır sayısı kadar döngü kurduk. Döngünün içinde değerleri okuması için listView1.Items[i] kaçıncı satırda ise o satırdaki veriyi stirng değişkenlerine atadık. Programın kopma noktası da burası oluyor zaten. Geriye kalan kısım Ado.net den başkası değil…
Programda bazı şeyler eksik biliyorum ama hatasız çalışmakta. Burada aktarmak istediğim bilgi listview içinde for ile dönmeden başka bir şey değil…
Merhabalar. Bunu access veritabanına nasıl kayıt yapabilirz.Paylaşabilirseniz sevinirim.