SqlDataAdapter işlemleri

Serhat tarafından yazılmıştır. 16. Aralık 2008 16:37

Bu yazımızda SQL Server ile iletişim sağlamamızı sağlayan SqlDataAdapter sınıfını inceleyeceğiz.SqlDataAdapter'ı Dataset nesnelerimize veritabanından datalarımızı alıp işlemek için  kullanılır.Yani veri kaynağı ve Dataset nesneleri arasında bağlantıyı sağlar.SqlDataAdapter  nesnesi using System.Data.SqlClient; namespace'inin altında bulunmaktadır.

SqlDataAdapter nesnesin 4 farklı constuctor'ı vardır.Uygulamalarımızda veri işlemek için ise  4 tane önemli propertysi vardır.Bunlar;

InsertCommand : Veritabanımıza kayıt eklemek için kullanılan propertydir.SqlCommand sınıfından üretilen nesne üzerinden işlem yapar.

DeleteCommand: Veritabanımızdan kayıt silmek için kullanılan propertydir.SqlCommand sınıfından üretilen nesne üzerineden işlem yapar.

UpdateCommand: Veritabanımızdaki kayıtları güncellemek için kullanılan propertydir.SqlCommand sınıfından üretilen nesne üzerinden işlem yapar.

SelectCommand: Bu propertyi veritabanımızdan kayıt getirmek için kullanılır.Ve diğerlri gibi  SqlCommand sınıfından üretilen nesne üzerinden işlem yapar.

DataSet'tende biraz bahsedecek olursak veritabanından bilgileri alıp database'e bağlı kalmadan üzerinden işlem yapmamızı sağlar.Ve istenildiğinde de DataAdapter nesnemizi kullanarak DataSet üzerindeki kayıtlarımızı tekrar veritabanına aktarabiliriz.DataSet nesnemizde veritabanı ile bağlantımız kesilse bile offline olarak verilerimiz üzerinde işlem yapabiliriz.DataSet nesnemizin içerisinde birden fazla tabloda olabilir .Bu tablolar veritabanımızdaki tabloların birebir aynısıdır.

Örneğimize bakacak olursak SqlDataAdapter  nesnemizi kullanara DataSet üzerine verilerimizi alıp update,silme ve yeni kayıt gibi işlemleri yapıp Güncelle butonumuza bastığımızda hafızadaki bilgilerimizi SqlDataAdapter nesnemizin Update metodunu kullanarak veritabanımıza son halini depolamış olacağız.Amacımız sadece veritabanındaki bilgileri almaksa ise DataAdapter sınıfının Fill() metodunu kullanılır.

Örneğimizin görünümü aşağıdaki gibidir.

SqlDataAdapter

Veritabanımızın yapısına görsel olarak bakacak olursak  ise şöyledir

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace SqlDataAdapterKullanimi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Tablolarımızın tutulduğu dataset.
        DataSet ds = new DataSet();

        //Connnection nesnemizi tanımlayıp bilgileri veriyoruz
        SqlConnection cnn = new SqlConnection("data source = localhost; initial catalog=Emlak; integrated security=true");
        
        //Dataset ile veritabanımızın arasındaki baglantıyı sağlayan nesnemizi tanımlıyoruz.
        SqlDataAdapter da = new SqlDataAdapter();
        
        //Kayıt Getir butonu
        private void btnKayitGetir_Click(object sender, EventArgs e)
        {
            //Veritabanımızdaki kayıtları getirip datagrid'e eklemek için SqlCommand sınıfından cmdKayitGetir adında nesne örnekleyip parametre olarak sorgumuzu ve yukarıda tanımlamış olduğumuz connection'ı veriyoruz.
            SqlCommand cmdKayitGetir = new SqlCommand("select * from emlak_tablo", cnn);

            //Dataadapter'ımızın SelectCommand propertyisine cmdKayitGetir nesnesini veriyoruz.
            da.SelectCommand = cmdKayitGetir;

            //Daha sonra veritabanımızdaki bilgileri dataset'imize doldurmak için SqlDataAdapter sınıfının Fill() metodunu kullanıyoruz.Parametre bilgileri olarak bir dataset nesnesi alır.Ek olarak dataset'imizin içindeki tablolara index numarasıyla erişmemek için birde "EmlakTablo" adında string girerek dataset içerisine atmış olduğumuz tabloya isim vermiş oluyoruz.
            da.Fill(ds, "EmlakTablo");

            //Kayıtlarımızı listelemek için datagrid'imizin dataSource propertysine tanımlamış olduğumuz DataSet nesnemizin Tables propertysine listelemek istediğimiz isimi veriyoruz. ds.Tables["EmlakTablo"] dediğimizde dataset nesnemizin içindeki EmlakTablo adıyla kayıtlı olan bilgileri getirecektir.
            dataGridView1.DataSource = ds.Tables["EmlakTablo"];
        }

        //İşlemleri Güncelle Butonu
        private void btnIslemGuncelle_Click(object sender, EventArgs e)
        {
            try
            {
                //Listelemede olduğu gibi kayıt eklemek içinde SqlCommand sınıfından bir nesne yaratmalıyız.cmdKayitEkle adlı nesnemizin parametrelerine insert sorgumuzu yazıyoruz ve connectionuna ise global olarak tanımlamış olduğumuz cnn nesnesini parametre veriyoruz.Böylece komutumuz ve connection bilgilerimiz tamamlanıyor.
                SqlCommand cmdKayitEkle = new SqlCommand("insert into emlak_tablo(satisTip,mevki,tur) values (@satisTip,@mevki,@tur)", cnn);

                //Kayıt eklemek için oluşturduğumuz cmdKayitEkle nesnemize Parameters kullanarak sorgumuza bilgileri eliyoruz.İlk parametre yukarıda bulunan insert sorgusundaki değişkenimiz, ikinci parametre girilecek bilginin Sql Server'daki veri türüyle aynı olması için SqlDbType enum'ından türünü seçerek boyutunu veriyoruz.Ve son olarakda işleme alınacak tablo adımızı doğru bir şekilde giriyoruz.Böylece bu 3 parametreyi kullanarak gerekli parametreleri yukarıdaki insert sorgumaz eklemiş oluyoruz.
                cmdKayitEkle.Parameters.Add("@satisTip", SqlDbType.NVarChar, 50, "satisTip");
                cmdKayitEkle.Parameters.Add("@mevki", SqlDbType.NVarChar, 50, "mevki");
                cmdKayitEkle.Parameters.Add("@tur", SqlDbType.NVarChar, 50, "tur");

                //Parametreleri aldıktan sonra yapmamız gereken tek şey DataAdapter nesnemizin InsertCommand propertysine kayıt eklemek için oluşturduğumuz command nesnemizi veriyoruz.
                da.InsertCommand = cmdKayitEkle;


                //Kayıt eklemede kullandığımız insert işlemindeki gibi SqlCommand sınıfından bir nesne yaratarak sql sorgumuzu yazığ bağlantımızı veriyoruz.Daha sonra parametrelerine id bilgisini yollayarak DataAdapter nesnemizin DeleteCommand propertysine kayıt silmek için oluşturduğumuz cmdKayitSil 'i veriyoruz.
                SqlCommand cmdKayitSil = new SqlCommand("delete from emlak_tablo where id=@id", cnn);
                cmdKayitSil.Parameters.Add("@id", SqlDbType.Int, 4, "id");
                da.DeleteCommand = cmdKayitSil;


                //dataGrid'imizde listelemiş olduğumuz kayıtlar üzerinde değişiklikleride kaydetmek için birde update işlemini uygulamalıyız.SqlCommand sınıfından cmdKayitGuncelle adında bir nesne yaratarak gerekli olan update sorgumuzu yazıp değişkenlerimizi verip son olarak command nesnemize connection'u atıyoruz.
                SqlCommand cmdKayitGuncelle = new SqlCommand("update Emlak_tablo set satisTip=@satisTip,mevki=@mevki,tur=@tur where id=@id", cnn);

                //cmdKayitGuncelle nesnemize parametre ekleyerek  değişken adını , sqldeki tablo veritipini ve boyutunu verip kaynak tablo adını vererek parametre işlemimizi tamamlıyoruz.
                cmdKayitGuncelle.Parameters.Add("@id", SqlDbType.Int, 4, "id");
                cmdKayitGuncelle.Parameters.Add("@satisTip", SqlDbType.NVarChar, 50, "satisTip");
                cmdKayitGuncelle.Parameters.Add("@mevki", SqlDbType.NVarChar, 50, "mevki");
                cmdKayitGuncelle.Parameters.Add("@tur", SqlDbType.NVarChar, 50, "tur");

                //Yaptığımız değişiklikleri dataadapter nesnemizin UpdateCommand propertysine veriyoruz.
                da.UpdateCommand = cmdKayitGuncelle;

                //Silme,yeni kayıt ve güncelleme işlemlerini veritabanımıza yansıtmak için Adaptor nesnemizin Update() metodunu kullanıcaz.Bu metot parametre olarak üzerinde işlem yaptığımız dataset nesnemizin tables'ine dataset için oluşturduğumuz tablo adını verirsek o tablomuzu artık veritanımıza göndererek yapmış olduğumuz işlemlerin son halini veritabanımıza kaydetmiş oluruz.
                da.Update(ds.Tables["EmlakTablo"]);

                //Update() metoduyla kayıtları kaydettiğimizden son halini dataGrid'imize dataset'teki tablomuzu kaynak gösteriyoruz.

                dataGridView1.DataSource= ds.Tables["EmlakTablo"];

                //ve belirttiğimiz try bölmesinde tüm işlemler doğru şekilde yapıldıysa messageBox'la bilgilendiriyoruz.
                MessageBox.Show("Güncelleme başarıyla yapıldı");
            }
            catch
            {
                //update , delete veya yeni kayıt işlemlerinde problem yaşanırsa ise mesaj veriyoruz.
                MessageBox.Show("Güncelleme işlemi başarısız !");
            }
        }
    }
}

Örneği indirmek için

Bu yazımızda  SqlDataAdapter sınıfını kullanarak DataSet üzerinde işlemler yaptık.

İyi çalışmalar herkese :)

Serhat TAŞ

4 kişi tarafından 4.3 olarak değerlendirildi

  • Currently 4,25/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

ADO.NET

Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.5.0
Bu tema Mads Kristensen tarafından yapılmıştır ve Türkçeleştirilmesi Blog Engine Türkiye ekibi tarafından yapılmıştır.

Son Yorumlar

Comment RSS

Yasal Uyarı

Bu sitede sunulan tüm bilgi ve dökümanların kullanımından ve sitede yapılan kullanıcı yorumlarından (siyasi içerik,hakaret vb.) doğacak sorunlardan yazar sorumlu tutulamaz. 

İçeriğin kaynak belirtilmeden kopyalanması yasaktır !

SERHAT TAŞ

© Copyright 2010