XML (Extensible Markup Language) Nedir

XML yani Extensible Markup Language Türkçe olarak genişletilebilir işaretleme dili olarak anılmaktadır. Aslında bir programlama dili gibi düşünmemek gerekir. Bir nevi işaretleme yapar, tıpkı CSS gibi yani. Kullanımı oldukça basittir ve text tabanlı bir formata sahiptir ve özellikle veri saklama amacı ile kullanılmaktadır, yani bir XML dosyanızı veri tabanı olarak kullanabilirsiniz. XML kullanımı oldukça basittir dedim çünkü kullanımı HTML kullanımı ile oldukça benzerlik göstermektedir. HTML içinde XML içinde bildiğimiz < ve > tagleri kullanılmaktadır ve bu tagler içinde ilgili attribute yani davranışlar yer alırlar.

HTML ve XML arasındaki en büyük fark, HTML’de oluşturulan tagleri bizler oluşturamazken yani kendimize özel tagleri tanımlayamaz iken XML’de bunu yapabiliriz, aşağıda zaten bununla alakalı bir örnek tanımlama yapacağım o zaman çok daha net anlaşılır hale gelecektir. Başta da dedim ya bir işaretleme dilidir, kendi taglerimizi yazabildiğimiz için aslında bir işaretleme yapıyoruz, tıpkuı CSS gibi yani.

Örnek olarak bir HTML elementin kullanımına örnek verelim h1 elementini kullanıyorum :

1
<h1>İsmail GÜRSOY</h1>

Bu örnekte iki tag arasında yer alan İsmail GÜRSOY ifadesi HTML’de h1 elementi ile tanımlanmıştır ve tarayıcının standart olarak h1 elementine göre bir başlık niteliğinde ifadeyi yazdırması sağlanmıştır.

Şimdi şöyle bir projemiz olduğunu düşünelim, bir çok yazımız var diyelim ki bir sinema sitesi yaptık çeşitli makaleler yazıyoruz ve bu makalelerin bir başlığı bir içeriği mevcut. Bu başlıkları da bir databaseden yani bir veritabanından çekmemiz gerekiyor, ama basit bir veritabanı yapısı olsun istiyoruz. Başlık bilgileri data olarak saklanacak ve basit olacak yani bir veritabanı için server vs kullanmak istemiyoruz. Neye başvurabiliriz?

Burada verilecek olan cevap tabii ki XML’dir. Diyelim ki bir kaç film hakkında makale yazacağız bilgileri de XML’den seçeceğiz. Şöyle bir yapı oluşturuyorum :

1
2
3
4
<film>
  <filmAdi>Babam ve Oğlum</filmAdi>
  <yonetmen>Çağan Irmak</yonetmen>
</film>

Burada görüldüğü üzere bir film elementi mevcuttur ve bu elementin altında da bir filmadi ve yonetmen elementi bulunmaktadır. Bu elementler görüldüğü üzere < ile > tagleri arasında ve her biri daha sonra kapatılmıştır.

XML’de bir diğer önemli noktada şudur, diyelim ki biz bir element yazdık bunu veritabanımıza kaydettik, bunun gibi onlarca veri kaydettik. Peki bunlar içinde kullanmak istediklerimiz olacak veya kullanmak istemediklerimiz ya da belirli şartlara göre kullanmak istediklerimiz vs olacak. Bunu ayırt edebilmemiz için XML bize kolaylık sağlıyor tabii ki, bu kolaylık elemente bir attribute atamak yani bir davranış eklemek. Örneğin yukarıdaki örneğimizi ele alalım, diyelim ki yabancı ve yerli filmleri ayırt etmek istiyoruz, nasıl yapabiliriz?

Böyle bir durumda attribute yani davranış eklemeliyiz. O halde şöyle bir şekilde düzenleme yapılabilir. Format diye bir davranış oluşturabiliriz şu şekilde :

1
2
3
4
<film>
  <filmAdi format="yerli">Babam ve Oğlum</filmAdi>
  <yonetmen>Çağan Irmak</yonetmen>
</film>

Bu yazım tabi XML’e sadee giriş niteliğinde bir yazı temel bir örnek olarak yazıldı, daha geniş yazılar ASP.NET örnekleri içinde ele alınmıştır.

….:::alıntıdır:::….
—-ismailgursoy.com.tr—-

Reklamlar

DataSet Nedir? Nasıl kullanılır?

DataSet nesnesi herhangi bir veri kaynağı ile ilişkilendirilmiş veri kümesini temsil eder. Bu veri kaynağı bir veritabanı olacağı gibi XML formatlı bir kaynakta olabilir. Nitekim DataSet nesnesinde tutulan veriler hafızada XML formatında tutulmaktadır. DataSet içindeki veriler aynen veri tabanında olduğu gibi tablolar şeklinde saklanır. Yani bir DataSet nesnesi bir yada birden fazla tablo barındırabilir. DataSet’in yapısındaki tablolar DataTable isimli sınıfla temsil edilir. Bu da DataSet’in DataTable türünden nesneleri olan bir kolekesiyona sahip olduğunu gösterir. Bu koleksiyonun adı Tables’ dır. Tables koleksiyonun Add() ve Remove() metotları kullanılarak DataSet’e yeni tablo eklenip çıkarılabilir. Tables koleksiyonundaki tablolara indeksleyici yardımıyla erişilebilir. İndeksleyincinin parametresi tablonun ismi olabileceği gibi tablonun DataSet’teki sıra numarası da olabilir.6

Her bir DataTable nesnesinin Rows ve Columns koleksiyonu bulunmaktadır. Rows koleksiyonu DataTable’daki kayıtların kümesidir. Bu kümedeki her bir kayıt ise DataRow isimli sınıfla temsil edilir. Bir kayıttaki veriler sütunlara ayrılmıştır. Bir kayıt birden fazla sütundan oluşmuştur. Dolayısıyla her bir kaydın ilgili sütununa erişmek için DataRow sınıfındaki indeksleyici kullanılır. DataTable’da olduğu gibi indeksleyicinin parametresi sütunun adı yada sıra numarası olabilir.

DataSet nesnesinde veri ile direkt ilişkili olan bu nesnelerin yanı sıra ilişkisel veri tabanı modelinin gerektirdiği yapıları barındırmak içinde çeşitli sınıflar vardır. Bu sınıflardan en önemlisi DataRelation ve Constraint sınıfıdır. İki tür Constraint(kısıt) sınıfı vardır. Bunlar UniqueConstraint ve ForeignKeyConstraint sınıflarıdır. Constraint sınıfları temel olarak verinin tablolara yerleştirilme kurallarını belirler. Örneğin UniqueConstraint tablodaki bir kaydın tekil olmasını sağlarken, ForeignKeyConstraint sınıfı birbirleriyle ilişkili tablolardan birinde meydana gelen değişikliğin diğerinde nasıl bir etki yaratacağını belirler. DataTable nesnelerinin Constraints isimli koleksiyonuna oluşturulan bu Constraint nesneleri aktarılarak kısıtların çalıştırılması sağlanır. Dikkat edilmesi gereken nokta kısıtların çalışması için DataSet’in EnforceConstraints özelliğinin true olması gerektiğidir. Diğer bir önemli sınıf ise DataRelation sınıfıdır. Bu yazıda DataRelation detaylı bir şekilde anlatılacaktır. Bundan sonraki yazımda ise Constraint sınıfları üzerinde duracağım.6

Yukarıda bahsi geçen bütün sınıflar verinin hafızada modellenmesi için gerekli olan sınıflardır. Tüm bunlar için verinin DataSet içine doldurulması gereklidir. DataAdapter bir DataSet’in yada DataTable’ ın içini doldurmak için veri kaynağı ile bağlantı kurar. Bu işlemi yapan DataAdapter sınıfının Fill() metodudur. Bu metot parametre olarak bir DataSet nesnesi alabileceği gibi DataTable nesnesi de olabilir. Eğer paramatre bir DataSet nesnesi ise DataSet nesnesi içinde yeni bir DataTable nesnesi oluşturulur ve veriler bu nesneye aktarılır. Veri kaynağına DataAdapter ile erişirken dikkat etmemiz gereken önemli bir nokta var : Her DataAdapter nesnesi ile ancak bir DataTable nesnesi oluşturulabilir. Dolayısıyla birden fazla tablo içeren DataSet nesneleri ile çalışmak için birden fazla DataAdapter nesnesi oluşturmalıyız. DataSet içinde yapılan değşikliklerin orjinal veri kaynağında güncellenmesi içinde DataAdapter kullanılır. DataAdapter’in güncellenen verileri düzgün bir biçimde ele alabilmesi için UpdateCommand, InsertCommand ve DeleteCommand gibi özelliklerinin belirtilmesi gerekir. Command nesneleri bir SQL dizgesi ve Connection nesnesi ile kurulur.

Nasıl Kullanılır?

DataSet Oluşturma

DataSet nesnesinin bir örneği yaratılacağı zaman DataSet constructor’ı kullanılır. Yeni bir DataSet nesnesi yaratırken isterseniz parametresiz çağırarak taban constructor’ını kullanabilirsiniz veya kendiniz bu metodu overload edebilirsiniz bu durumda ise constructor’e DataSet nesnesinin adını parametre olarak gönderirsiniz. Aşağıda bu iki durumun kullanımı gösterilmiştir.

Dim dataSet as DataSet = new DataSet();  Taban constructor’ı kullanılmış

Dim dataSet as DataSet = new DataSet(“ornekDataSet”);  overload edilmiş

DataSet nesnesinin içini doldurnayı .Net data providerları bir arabirim işlevi görerek yapar. DataSet nesnesi veriyi tutar, veri üzerinde update(güncelleme), delete(silme), add(ekleme) işlevlerinin yapılmasına da izin verir. Ancak bu DataSet nesnesinin o sırada veritabanı ile bağlantısı olmadığı için Update metodu çağrıldığı zaman veri üzerinde yapılan değişiklikler DataAdapter nesnesi aracılığı ile veritabanına gönderilirler.

Kayıt Ekleme

Yeni bir DataRow nesnesi yaratarak DataSet’e yeni kayıt eklemesi yapılır. Bu ise DataTable nesnesinin NewRow metodu kullanılarak gerçekleştirilir. Bu metod ile boş bir row(sıra) yaratılır. Kayıt ekleme için basit bir örnek kod aşağıda belirtilmiştir.

Dim row as DataRow = dataSet.Tables[0].NewRow()

row[“soyad”] = “soyad”

row[“ad”] = “ad”

dataSet.Tables[0].Rows.Add(row)

Değişiklikleri Kabul Etme

DataSet üzerinde herhangi bir veri üzerinde değişklik yapıldığı zaman veride değişiklik yapıldığına dair işaretlenir. Eğer veri üzerinde yapılan değişkliğin doğruluğu onaylanırsa veri üzerinde yapılan değişiklikler kabul edilmek üzere DataSet nesnesinin AcceptChanges() metodu çağrılır. Ayrıca tüm DataSet’ler üzerinde yapılan değişiklikleri kabul etmek istemiyorsanız DataRow yada DataTable’ın AcceptChanges() metodunu kullanabilirsiniz. Bu sayede veriler üzerinde tam bir yönetim söz konusu olabilir.4

Yalnız DataSet üzerinde yaptığınız değişiklikler veritabanını değiştirmez.(Eğer DataSet’inizin veritabanı bağlantısı kesilmişse ki performans açısından bağlantının kesilmiş olması daha yararlıdır.). Bu yüzden DataAdapter nesnesinin Update() metodunu kullanarak veritabanına sadece değişiklik yapılan kısımların gönderilmesi sağlanır. (Dikkat tüm veriler gitmiyor sadece değişiklikler gidiyor.)

Veri Bileşenlerini Bağlama

Yeni .Net bileşenleri(component) sayesinde verileri bağlamak hem Windows Formlarında hem de Web Formlarında oldukça basitleşti. DataSetleri Windows veya Web Formlarına bağlayarak DataSetin içindeki bütün verileri görmek mümkün.

Bu bileşenlerden bir tanesi olan DataGrid’ler çoklu DataTable nesnesini içlerinde barındırırlar. Bu DataTable’lerin her biri de çoklu data row nesneleri içerirler. DataGrid’in DataSource özelliğine sadece DataSet nesnesini bağlamamız DataSet’lere erişmemiz için yeterli olur. Tabii bir de DataSet içerisinden hangi DataTable nesnesinin gösterileceğini belirtmemiz gerekir. Aksi halde DataGrid üzerinde DataSet’in sahip olduğu bütün DataRow’lar gösterilir. Bu işlemi ise DataGrid’in DataMember özelliğini kullanarak yapabiliriz

…alıntıdır…

DataSet ve DataAdapter Kavramı

İlk olarak bu ikiliyi neden kullanma ihtiyacı duyarız bununla başlayalım. Bildiğiniz üzere veri bağlama yöntemleri temel olarak 2 adettir. Biri sürekli bağlantılı mimari diğeri ise çevrimdışı tabanlı mimari. Bizim burda ele alacağımız çevrimdışı tabanlı mimaridir.
Nedir bu çevrimdışı mimari
Eğer uygulamamız, veriyi sıklıkla rahatsız etmiyor ve veritabanımız son saniyeler içinde bile değişikliğe uğramayan, kendi çapında bir veritabanı ise seçmemiz gereken yol çevrimdışı mimaridir. Çünkü bu sayede veritabanı ile sürekli bağlantı halinde olmadan veriler üzerinde oynama ve izleme yapabiliriz. Şimdi bunun nasıl olduğuna gelelim. Yukardaki şablondada gördüğünüz üzere veritabanı ile uygulama arasında bir köprümüz var. Bu köprüdeki alışverişi yapan DataAdaptor’dür. DataAdaptor yapısı gereği otomatik olarak bağlantıyı açar, istenilen sorguyu veritabanına sorar, cevabı alır uygulamaya taşır ve bağlantıyı kapatır. DataAdaptor’ün başlıca görevi budur. Veritabanı ile Uygulama arasında köprü görevi görmek. Peki DataSet nedir? işte bunu açıklamanın en kolay yolu şudur. DataSet bildiğimiz Veritabanının ADO.Net içindeki kopyasıdır. Nasıl bir veritabanımız ve adı var ise SQL içinde, bunun uygulama tarafındaki hali DataSet’e denk gelir. Aynı veritabanı içindeki tabloları gibi DataSet’inde DataTable’ları vardır. Bir nevi veritabanından çekilen veri evini özlemsin, aynı şartları bende burda sağlıcam merak etmesin abisi, der gibi ADO.Net veriler için aynı yuva ortamını sağlamış diyebiliriz.

Verileri çekip Data Grid View ile göstermek….

// İlk önce bir Sql bağlantısı tanımlarız…
SqlConnection baglanti = new SqlConnection(connection string buraya yazılır);

// Daha sonra sql’e soracağımız sorguyu hazırlarız…
SqlCommand sorgu = new SqlCommand(“select * from …..”, baglanti);

// Şimdi sıra geldi Data Set’i oluşturmaya
DataSet ds = new DataSet();

// Buna birde tablo yaratalım…
DataTable dt = new DataTable();

// Şimdi DataSet’e bak bu senin tablon ona sahip çık diyelim..
DataSet.tables.add(dt);

// Şimdi körpüyü kurma zamanı yani DataAdaptor ve sorgusu…
SqlDataAdaptor kopru = new SqlDataAdaptor(sorgu);

// Buda bittikten sora sıra geldi bu tabloya verileri doldurmaya..
kopru.fill(dt);

// E herşey hazır.. veriler artık elimizde datatable’ın içinde duruo, şimdi tek yapmamız gereken datagridview’a bak gridview al sana tablo, içindede veriler var.. al bunları göster demek..
DataGridView.DataSource = dt;

…alıntıdır…

DataSet Nedir -2

Dataset Veritabanınızdan bağlantısız olan çalışan bir nesnedir. Saf XML tabanlı yapısı sayesinde web formları ve DotNet component’leri ile kusursuz bir entegrasyon sağlar. Bir kez veritabanına bağlandıktan sonra veriyi alır ve bağlantıyı keser. Elinizde Excel tablosuna benzer bir veri yığını olur. Aslında çok daha gelişmiş bir yapıdır ama bunu biraz daha ileride işleyeceğiz. Bu Excel tablosuna benzer yapıda; veriler üzerinde değiştirme, silme gibi işlemleri yapabildiğiniz gibi yeni kayıt da ekleyebilirsiniz. Bütün bunları yaparken database’e herhangi bir bağlantı kurmaz. Ancak siz ona kayıtları database’den güncelleme komutu verdiğinizde bağlantıyı kurar ve işlemi gerçekleştirir. Bu Server’ın kaynaklarını daha düzgün kullanmak için çok iyi bir yoldur.

Dataset’ler Server-Client tabanlı Windows uygulamaları geliştirdiğinizde .NET Framework altyapısı sayesinde programınız çalıştığı sürece server’dan dataset e çekilen bilgileri Client’ın memory’sinde XML olarak Cache’te tutar. Fakat bu durum web uygulamalarında biraz değişiyor. Dataset kendisini bu sefer server üzerinde cache’lenen bir nesne olarak gösteriyor. İstekte bulunduğunuz data server üzerinde bir kez bağlantı kurulduktan sonra aynı bağlantıdan gelen istekler Server cache’inden karşılanıyor.

Örnek:

Mesela yazdığınız Server-Client tabanlı bir uygulama var. Satış grubunuzdan birisi Laptop’uyla (bu bilgisayarın laptop olması örneğimiz açısından önemli) server’a network vasıtasıyla bağlandı ve ürünlerinizin fiyat listesini programdan çağırdı. Sayfalar halinde, belki 1000 tane ürün listelendi (bütün listeyi bir anda ekrana getirmediğimize dikkatinizi çekerim.). Fiyat listesi dataset sayesinde Client’ın memory’sinde cache’lenmiş oldu. Üzerinde istediği değişiklikleri yaptı ve network kablosunu çıkartarak server ile olan bütün bağlantısını kesti. Sonra satış yapmak üzere müşterisine gitti. İşte Dataset in güzelliği burada; bütün bu data client memory’sinde cache’lenmiş durumda. Yani müşterisinde, sanki kendi network’üne bağlıymışcasına ürünlerini görebilecek ve bilgilerini müşterilere aktarabilecek.

Web uygulamalarında Windows uygulamalarına benzer biçimde Client Cache’inin kullanımına başlanması için Microsoft’un native .NET Framework destekli bir browser sürümü çıkarması gerekiyor galiba

DataSet ve Verileriniz Arasındaki Köprü : DataADAPTER !

Command nesnesi yardımıyla DataReader kullanarak sorgu gönderip sonucunu alabiliyorduk. Tabii ki istersek DataSet’imize veri doldurmak için DataReader nesnesini kullanabiliriz, ama bu pek kullanışlı bir yol olmaz. Üstelik DataSet için Disconnected (Bağlantısız) yapıya uygun başka bir nesne geliştirilmiş olmalı değil mi? Peki DataSet kullanmak istediğimizde ne yapmalıyız? İşte sorumuzun cevabı : DataAdapter !

DataAdapter Nedir?

DataAdapter nesnesi Connected ve Disconnected bağlantı yapısı ile veri arasında köprü vazifesi görür. Database’inizden çektiğiniz veriyi DataSet’inize doldurmak yada DataSet’inizde güncellenerek cache’lenmiş verilerinizi veri kaynağınızda da güncellemek için istediğiniz zaman DataAdapter nesnesini kullanabilirsiniz. Konuyu daha fazla dağıtmamak için şu anda bu nesnenin DataSet ile kullanımı ve veriye erişim konuları üzerinde yoğunlaşmalıyız.

Bilmeniz gereken bir-iki ufak ayrıntı da şunlar:
– DataAdapter Disconnected Data ile çalışmak için tasarlanmıştır.
– DataAdapter ve DataSet arasında direkt olarak bir bağlantı yoktur.

DataAdapter ile DataSet’e veri doldurulurken database bağlantısı kapalı ise açılır, dataset doldurulur ve işlem bittiği anda otomatik olarak kapatılır. Eğer bağlantı halihazırda açıksa herhangi bir hata vermeden işlemi yapar ve bağlantıyı kapatarak işlemini sonlandırır. Böylece bizlerin de fazla detayla uğraşmadan hızlıca işlemlerimizi yapmamızı sağlar.

Kullanımına gelince; Temelde iki adet argüman alır. Bunlardan birincisi DataSet’e doldurmak istediğimiz veriyi belirten “SELECT * from Nothwind” gibi bir SQL cümlesidir. Ikincisi ise bağlantıyı açıp veriyi almasını ve bağlantıyı kapatmasını sağlayan Connection String adını verdiğimiz database’e bağlantı cümlesidir. Son olarak DataSet’e veriyi doldururken de Fill() methodu kullanılır.

Aşağıdaki paragrafta DataAdapter’in temel olarak kullanımına dair örneği göreceksiniz.

DataSet Oluşturma ve DataTable yapısı
Dataset deyince aklımıza bir yapı daha gelmeli: DataTable !

Dataset’i bir excel dosyasına, DataTable’ı ise Excel içerisindeki WorkSheet’lere benzetebiliriz dersem herhalde DataSet yapısı aklınızda daha iyi oluşur.
Datatable, Dataset’in içerisinde birden fazla bulunabilen, kayıtların tutulduğu tablolardır. Dataset, DataTable’lara bir kap vazifesi görüyor; onları yeniden oluşturup birbirine kopyalayabiliyor, aynı dataset içerisinde bulunan DataTable’lar arasında ilişki kurabiliyor, hatta database olmadan direkt olarak cache’de DataTable’lar yaratabiliyor. Bu durum bizi elektronik ticarette alışveriş sepeti tarzında uygulamalar oluştururken bayaa rahatlatacak bir teknik. Tabii sadece bu bir örnek, kullanım alanının sınırsız olduğunu düşünüyorum. Bunun yanında sıralama, arama ve filtreleme özellikleri de var.

Bir Dataset’i oluşturduğunuz anda veritabanındaki bir tabloyu yada sorgu sonucunu atayabilirsiniz. Bu durumda Dataset kendi içerisinde otomatik olarak bir tablo oluşturacaktır.

Şimdi bir DataSet nasıl oluşturulur görelim:

[C#]
Dataset Dset = New DataSet(“DataSet_ismi”)

Yukarıda gördüğünüz gibi bir dataset’in oluşturulması oldukça basittir. İsterseniz örneği daha kullanılabilir bir hale getirelim.

Dataset’i oluşturduktan sonra veri ile dolduralım ve elimizde disconnected ham veri bulunsun.

[C#]

string strConn, strSQL;
strConn = “Provider=SQLOLEDB;Data Source=Localhost;” +
“Initial Catalog=Northwind;Trusted_Connection=Yes;”;
strSQL = “SELECT * FROM Customers”;
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, strConn);
DataSet dset = new DataSet();
da.Fill(dset, “Customers”);

Örnekteki adımları biraz açıklayalım isterseniz.

Satır 1 : Dim strConn, strSQL As String
strConn ve strSQL değişkenleri String veri tipinde tanımlanıyor.

Satır 2 : strConn = “Provider=SQLOLEDB;Data Source=Localhost;” & _
“initial Catalog=Northwind;Trusted_Connection=Yes;”
strConn değişkenine SQL Server a ulaşabilmesi için bağlantı dizesi atanıyor. Artık Northwind database’ine bağlanabiliriz.

Satır 3 : strSQL = “SELECT * From Customers”
strSQL değişkenine SQL Server’ bağlanıldığında database’den hangi verilerin çekileceğini söyleyen Transact SQL dizesi atanıyor.

Satır 4 : Dim da As New OleDbDataAdapter(strSQL, strConn)
“da” adıyla yeni bir data adapter oluşturuluyor. Datasetimiz ile SQL server arasında bağlantıyı bu nesne sağlıyor. strSQL ve strConn değişkenlerindeki bilgileri kullanarak data adapter’imize bağlantıyı nasıl kuracağını anlatmış olduk.

Satır 5 : Dim dset As New DataSet()
“dset” adıyla DataSet’imiz oluşturuluyor. Şu anda sadece bir nesne olarak oluşturuldu ve içerisinde herhangi bir data barındırmıyor.

Satır 8 : da.Fill(dset, “Customers”)
Data Adapter nesnemiz “Fill” metodunu kullanarak Dataset’imizin database bağlantısını gerçekleştiriyor (6. satırda nasıl bağlandığı anlatılıyor) ve elde ettiği veriyi DataSet içerisine “Customers” adında bir tablo oluşturarak dolduruyor.

Artık elinizde verilerinizi rahatlıkla görüntüleyebileceğiniz bir DataSet’iniz var.

Peki DataSet’imiz ne işe yarayacak? Bunu nasıl kullanabiliriz? Aşağıdaki örnekte de DataSet’imizi bir DataGrid de nasıl gösterebileceğimiz örnekleniyor.

[C#]
ds DataSet = new DataSet();
Da.Fill(ds);

Datagrid1.DataSource = ds;
Datagrid1.DataBind();

DataSet’imizi DataAdapter yardımıyla doldurduktan sonra DataGrid1 isminde bir datagrid oluşturduğumuzu farzedelim. Datagrid’imizin datasource’unu dataset’imiz olarak belirtiyoruz ve DataBind() methodu ile veriyi datagrid’imizle birleştirmiş oluyoruz. (DataBind() methodunu sadece ASP.NET ile uygulama geliştirirken kullanıyoruz. Windows uygulamalarında bu methodu kullanmaya gerek yok, aklınızda bulunsun.)

…alıntıdır…

Dataset nedir

DataSet System.Data sınıfına ait bir yapıdır. DataSet bir veritabanı yapısını programatik olarak temsil eder.

DataSet içinde veritabanı yapısına uygun tablolar bulunur. Bir kez uygulamaya geçtikten sonra veritabanı ile bağlantılı çalışması zorunluluğu ortadan kalkar.

Bütün tablolar yapılar artık uygulamadadır. Bir veritabanı tabloları ile neler yapabiliyorsak hemen hemen aynısını yapabiliriz.

DataSet ds = new DataSet();

Yukarıdaki gibi DataSet imizi tanımladıktan sonra DataAdapter ün fill metodu ile DataSet in içini dolduruyoruz.

da.Fill(ds,”CategoryName”);

DataSet imize birden fazla tabloa ekleyebiliriz. DataSet içindeki verileri göstermek için GridView kontrolu kullanabilirsiniz. GridView in DataSource una DataSet imizi tantıp binding yapıyoruz

…alıntıdır…

ASP Stored Procedure Kullanımı ( MsSql )

Asp ile stored procedure kullanımı çok basittir. Ve çok önemli avantajları vardır. En önemli avantajı sitenin hızlı çalışmasıdır. Stored Procedure ile yapılan sorgular gözle görülür bir hız artışı sağlar.
Öncelikle mssql veritabanımızı oluşturduk ve tablolarımızıda oluşturduk
Beraber örnek yapalım:
tablo adımız : TblHaber olsun. Alanlar : id , baslik, detay. Şimdi Procedure oluşturalım.Sql serverımızı açtık, veri tabanı adı TblHaber.
Stored Procedures  sağ tıklayıp New Stored Procedure diyoruz. Query sayfası açıldı. İçindekileri silelim ve aşağıdaki gibi procedure oluşturalım
CREATE PROCEDURE
HaberSirala
BEGIN
SELECT * FROM TblHaber ORDER BY id
END
GO

Procedure kodlarmızı yazdık ve Execute dedik. Procedure oluşturmuş olduk.Şimdi sayfamızdan çağıralım

set  rs = baglanti.execute
Exec HaberSirala
procedure adımızı yazdık
do while not rs.eof
rs.movenext:loop

…alıntıdır… (http://www.eyurtsever.com)

Stored Procedure Yapısı

Stored procudure yani diğer adıyla saklı yordamlar SQL server da saklanan methodlardır. Özellikli büyük uygulamalarda kullanılan birçok yönden avantaj sağlayan yordamlardır. Stored procedureler ile yazacağımız sorguları SQL Server ‘ da bir kez çalıştırıp , uygulama geliştireceğimiz ortamda her defasında sorgularımızı tekrar yazmamızı engeller.
Stored procedureler parametre alan yada parametresiz türden olabilir. Aynı zamanda değer de geri döndürebilir. Stored procedureler kısaca sp olarak da adlandırılırlar. Büyük uygulamalarımızıda kolaylık sağlar. Sp yazımında for , while ,if gibi komutlar da kullanılabilir. Bir kez yazılıp çalıştırılması yeterli olduğundan hızlı çalışırlar. Sp ler aynı zamanda değişiklik yapmaya elverişli olduğundan modülerlik de sağlanamaktadır.
Yeni bir stored procure yatamak için CREATE PROCEDURE deyimi kullanılmaktadır.Var olan bir procedure ü düzenlenmek için ise ALTER PROCEDURE , bir procedure ü silmek için ise DROP PROCEDURE kullanılmaktadır.
SQL Server ‘ da stored procedure oluşturma :
Ogr_Tbl isminde örnek bir tablo oluşturuldu.
Stored procdure oluşturmak için ;

şeklinde oluşturduğumuz veri tabanı klasörünün alt dizinindeki Programmability klasörünün alt dizininde bulunan Stored procedure ‘ e sağ tıklanarak oluşturulur.

Parametresiz ve tablodaki kayıtları getiren basit bir stored procedure oluşturalım.

Bu şekilde yazdığımız stored procedure ü çalıştırmak için Execute düğmesine basılır.

Böylece stored procedure çalıştırılmıs olunur.

Parametreli ve Id ye göre listeleyen bir stored procedure yazarsak ;

Varolan listele procedure ünü değiştirmek için Create Procedure deyimi şu şekilde kullanılır :

Şimdi parametre alan ve parametresi olmayan stored procedure ler hazırlayalım ve bunu c# ta kullanalım.

Yeni bir veri tabanı oluşturalım ve RehberTbl adında şekildeki gibi bir table ekleyelim.

Visual Studio ortamında bir form application açalım. Formumuza bir datagridview elemanı , textboxlar ve buton ekleyelim.

Formumuzun loadında gridview da veritabanından çekilne veriler listenirken , girilen ad, numara ve email için de veri tabanına ekleme yapacak stored procedurelerimiz yazalım.

listeleme yapan sp_Listele sp si ;

Ekleme yapan sp_ekle sp si ;

Ekleme yapan sp_ekle parametreli bir proceduredür. Dışarıdan ad ,telefon ve maili parametre olarak alıp kaydetme işlemini yapar. C# kısmında bu parametreleri gönderebilmemiz için parametreleri belirtmemiz gerekmektedir. Command nesnemizin tipinin stored produre olduğunu belirttik. Daha sonra CommandText için stored procedure müzün ismi olan “sp_ekle” procedure ü yazıldı. Command nesnesinin parametreleri tipleri ile birlikte eklendikten sonra , parametreyi textboxtan alacağı belirtildi.Herhangi bir geri dönüş olmayacağından ExecuteNonQuery ile çalıştırıldı.