[Ado.Net] Örnek – 1

Merhaba arkadaşlar,

Bir önceki yazımda ADO.NET ‘e bir giriş yapmıştık. Bu yazımda bu girişi daha da pekiştirmek için bir örnek anlatacağım.

Hatırlarsanız örneklerimi Northwind veritabanı üzerinde anlatıyordum. Bu yazımda da bu veritabanını kullanacağım. Northwind şirketinin çalışanlarını listeleyip, ekleme yapıp silebileceğimiz basit bir form hazırlayacağız.

Örnek bir form oluşturuyoruz ve aşağıdaki gibi kontrollerimizi ekliyoruz.

0

Bir tane SqlConnection nesnesi oluşturuyoruz :

        SqlConnection baglan = new SqlConnection("Server=localhost;database=Northwind;user=sa;password=123");

user => veritabanı server’ına bağlandığınız kullanıcı adınız.
password => veritabanı server’ına bağlanırken kullandığınız şifreniz.

“bağlan” nesnemiz sınıf bazında tanımlanmış bir nesnedir.

Çalışanları listele butonu için aşağıdaki button1_Click(…) eventini tetikletiyoruz. Bu event ise ListeyiGetir() metodunu çağırarak çalışanları listView kontrolüne listeleyecektir.


        private void button1_Click(object sender, EventArgs e)
        {
            ListeyiGetir();
        }

        private void ListeyiGetir()
        {
            listView1.Items.Clear();

            SqlCommand komut = new SqlCommand("select * from employees", baglan);

            baglan.Open();

            SqlDataReader oku = komut.ExecuteReader();

            while (oku.Read())
            {
                ListViewItem li = new ListViewItem();
                li.Tag = oku["EmployeeId"];
                li.Text = oku["firstname"].ToString();
                li.SubItems.Add(oku["lastname"].ToString());
                li.SubItems.Add(oku["birthdate"].ToString());
                li.SubItems.Add(oku["homephone"].ToString());
                listView1.Items.Add(li);

            }
            baglan.Close();
        }

Burada unutulmaması gereken en önemli nokta bağlantının açılması ve kapatılmasıdır. Şimdilik varsayılan olarak açılmamış kabul ediyoruz ve kontrol eklemiyoruz.

Kayıt ekle butonu için ise aşağıdaki fonksiyonu yazmalıyız.


        private void button2_Click(object sender, EventArgs e)
        {
            //eğer text kutuları boş olarak ekle butonuna basılırsa  veri tabanına boş değer ekler bu yüzden boşmu diye kontrol etmeliyiz.
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text) || maskedTextBox1.MaskCompleted != true)
            {
                MessageBox.Show("Gerekli alanlar doldurulmalı");
                return;
            }

            SqlCommand komut = new SqlCommand("insert into Employees(FirstName,LastName,BirthDate,HomePhone) values(@fn,@ln,@bd,@hp)", baglan);
            komut.Parameters.AddWithValue("@fn", textBox1.Text);
            komut.Parameters.AddWithValue("@ln", textBox2.Text);
            komut.Parameters.AddWithValue("@bd", dateTimePicker1.Value);
            komut.Parameters.AddWithValue("@hp", maskedTextBox1.Text);
            baglan.Open();
            int adet = komut.ExecuteNonQuery();
            baglan.Close();

            if (adet > 0)
                MessageBox.Show("Kayıt EKlendi");
            else
                MessageBox.Show("Hiçbir Kayıt Eklenmedi");

            ListeyiGetir();
        }

Kayıt eklendikten sonra ListeyiGetir() metodunu çağırmamızın sebebi ise listeye yeni eklenen değerlerin de gösterilmek istenmesidir.

Sil butonu için ise aşağıdaki fonksiyonu yazmalıyız.


        private void button3_Click(object sender, EventArgs e)
        {
            SqlCommand silkomut = new SqlCommand("delete from employees where employeeId=@eid", baglan);
            ListViewItem secilen = listView1.SelectedItems[0];
            silkomut.Parameters.AddWithValue("@eid", secilen.Tag);

            baglan.Open();
            int adet = silkomut.ExecuteNonQuery();
            baglan.Close();
            if (adet > 0)
            {
                MessageBox.Show(adet + " tane kayıt silindi");
            }
            else
                MessageBox.Show("Hiç Kayıt Silinemedi");

            ListeyiGetir();

        }

SqlCommand oluşturmanın bir çok yöntemi vardır. En basit anlatım şekliyle anlatmaya çalıştım. String olarak gönderdiğimiz çalıştırmak istediğimiz sql komutudur. bu komuta güvenli bir parametre göndermek için ise @ tagıyla parametre tanımladık. bu komut nesnesine bu tagla ekleyeceğim parametreler string’de yerine konularak çalıştırılacaktır.

Yukarıdaki örnekte seçili listView nesnesinden çalışanın id’sini çalıştırmak istediğimiz komutun ilgili kısmına yazılacaktır. Yani eğer id = 1 ise komutumuz “delete from employees where employeeId=1” olacaktır.

Bu yazımda anlatacaklarım bu kadar. Atladığım veya sormak istediğim kısımlar olursa çekinmeden sorabilirsiniz.

İyi çalışmalar,
Bir sonraki yazımda görüşmek dileğiyle.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir