|  | 
        
            | 
                    
                        | Dataset’ den Veritabanı Güncellemeleri |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Bildiğimiz gibi dataset nesneleri sanal veritabanları 
				olarak tabir edebileceğimiz veritabanından bağımsız çalışan, veritabanlarındaki 
				gibi birden fazla tablo barındırabilen ve bu tablolar içerisindeki kayıtlar 
				arasında ilişki kurabilen veri bloklarıdır. 
		
		Bu yazıdaki hedefimiz datasetlerin kullanımını 
				öğrenmek değil. Bu yüzden dataset hakkında belli bilgiye sahip olduğunuzu 
				varsayıyorum.
		Veritabanı güncellemelerini dataset nesnesi 
				kullanmadan da yapmak mümkün; bunun en basit şekli Command nesnemizin 
				ExecuteNonQuery metodunu kullanmak. Ancak programlarımızda dataset nesneleri 
				kullanıyorsak bu nesneler üzerindeki değişikleri de veritabanımıza geri 
				yansıtmamız mümkün.
		DataAdapter’ dan Dataset’ e Bilgi 
					Aktarımı
		Dataset’ i veritabanı bilgileri ile doldurmak için 
				.NET data sağlayıcıları kendi DataAdapter’ larını kullanmak zorundadırlar: OLE 
				DB .NET data sağlayıcısı için OleDbDataAdapter nesnesi ve SQL Server .NET data 
				sağlayıcısı içinse SqlDataAdapter nesnesi kullanılır. Bu doldurma 
				işleminin yapılması için DataAdapter’ ın Fill metodu kullanılır. Örneğin: (Sql 
				Server için) 
					Bu komut bloğunda görüleceği üzere önce northwind 
				veritabanı ile bağlantımızı kuruyor, daha sonra SqlDataAdapter nesnemizin 
				yapıcısına Select sql komutumuzu yazarak veri kaynağımıza bağlıyoruz. Burada 
				dikkat etmemiz gereken, SqlDataAdapter yapıcısındaki sql komut parametresinin 
				mutlaka Select sql komutu olmasıdır. Daha sonra “categories” tablosundaki 
				verileri ds adlı dataset nesnesine aktarmak için Fill metodumuzu 
				kullanıyonıyoruz. Fill metod parametresinde kullandığımız “categories” dataset’ 
				in içerisindeki tablonun ismidir. Bu opsiyoneldir, istersek tablo ismi vermeden 
				de dataset doldurabiliriz. Bu durumda dataset tabloya default olarak “table” 
				ismini verir. Neyse çok fazla uzatmadan datasetten veritabanı güncellemesine 
				geçmek istiyorum. Şimdiye kadar yaptıklarımız hepsi birer hazırlık aşamasıydı. 
		
		Dataset Güncellemeleri
		Güncelleme dediğimizde aklımıza aslında dataset’ e 
				yeni kayıt ekleme, kayıt silme, kayıt güncelleme gibi terimler gelmesi 
				gerekiyor. Yukarıda doldurduğumuz dataset üzerinde şimdi değişiklik yapacağız 
				ve bu değişiklilerin nasıl veritabanına geri yansıtıldığını göreceğiz. 
				Öncelikle biraz teknik bilgi:
		Dataset’ te yapılan değişikler, veritabanına Update 
				metodu ile gönderilir. Bu olayın nasıl gerçekleştiğini şu örnekle inceleyelim. 
		
		Dataset içerisine aktarılan veriler şöyle olsun:
						| DataSet ds=new DataSet();
							SqlConnection cnn=new SqlConnection("server=local\\vsdotnet;trusted_connection=yes;database=northwind");
							SqlDataAdapter da=new SqlDataAdapter("select 
									* from categories",cnn);
							cnn.open()
							da.Fill(ds,"categories");
							cnn.close(); |  
			
				Uygulamamızda “C400” CustomerID’ li müşterimizin 
				Status bilgisini DataSet içerisinde “Preffered” olarak değiştirdik diyelim. Bu 
				değişiklik sonucunda DataRow.RowState özelliği, değişen satırlar için 
				Unchanged’ den Modified’ a döner. Yani DataSet içeriği söyle olur:
					| (RowState) | CustomerID | Name | Status |  
					| (Unchanged) | C200 | Robert Lyan | Good |  
					| (Unchanged) | C400 | Nancy Buchanan | Pending |  
			
				İşte bu sırada DataAdapter nesnemizin Update metodunu 
				çalıştırdığımızda, Update metodu her satırı denetler. İlk satır için 
				veritabanına hiçbir Sql komutu gönderilmez, çünkü RowState özelliğinin değeri 
				“Unchanged” olarak kalmıştır. Buradaki RowState özelliği DataSet’ i oluşturan 
				DataTable nesnesinin her DataRow nesnesinde bulunan bir özelliktir. Ancak 
				ikinci satır için, Update metodu otomatik olarak komutu uyarır ve bu komutu 
				veritabanı gönderip orada işlettirir. Bu komutu uyarma işlemi kafanızı 
				karıştırmış olabilir: Update metodu RowState özelliğindeki duruma göre 
				DataAdapter nesnemizde tanımladığımız komutu arar ve onu çağırır: RowState 
				özelliği değişen satırlar için Modified”, dataset’ e yeni eklenen satırlar için 
				“Added” ve silinen satırlar için “Deleted” değerlerini alır ve DataAdapter 
				nesnesinden Modified satırlar için UpdateCommand, Added satırlar için 
				InsertCommand ve Deleted satırlar içinse DeleteCommand’ da tanımlanmış Sql 
				komutlarını veritabanına gönderir ve değişikliklerin orada da olmasını sağlar. 
				İşte bütün bu özelliklerin çalışmasını sağlayan Update metodudur. 
		
		Şimdi bu anlattıklarımızı bir örnekte pekiştirelim.
					| (RowState) | CustomerID | Name | Status |  
					| (Unchanged) | C200 | Robert Lyan | Good |  
					| (Modified) | C400 | Nancy Buchanan | Preffered |  
					
						Öncelikle veritabanı bağlantımızı kuruyoruz. Sonra 
				SqlDataAdapter nesnemizi tanımlıyoruz. Bu nesne sayesinde dataset nesnemize 
				veri aktarabilip, dataset nesnemizdeki güncellemeleri veritabanımıza geri 
				aktarabileceğiz. DataSet nesnemiz üzerinde veri güncelleme yapacağımız için 
				DataAdapter nesnemizin UpdateCommand özelliğine update sql komutunu 
				aktarıyoruz. Burası önemli çünkü dataset nesnemizde ne tür değişiklik 
				yapıyorsak(veri güncelleme, veri ekleme yada veri silme), uygun özellikleri 
				kullanmak zorundayız (InsertCommand, UpdateCommand, DeleteCommand). Aksi 
				takdirde programımızda hatalar oluşur. Bu programda UpdateCommand özelliğini 
				kullanıyor ve sql komutumuzda belirttiğimiz parametreleri tanımlıyoruz. 
				Parametre tanımlama başlı başına ayrı bir makale konusudur, bu yüzden burada 
				parametreleri inceleyemeyeceğiz. 
		
		DataSet nesnemizde de gerekli değişikleri yaptıktan 
				sonra, Update metodumuzu çalıştırıyoruz. Update metodu DataSet nesnemizdeki 
				değişiklikleri yukarıda bahsettiğimiz şekilde algılıyor ve DataRow 
				nesnelerimizdeki RowState özelliğini kontrol ederek, DataAdapter nesnemizde 
				tanımlanmış uygun komutları arıyor. Bu örnekde “0” indeksli satırımız 
				değiştikten sonra aynı satırdaki RowState özelliği “Unchanged” den “Modified” a 
				dönüyor ve Update metodu UpdateCommand özelliğindeki sql komutunu veritabanına 
				göndererek çalıştırılmasını ve datadet nesnemizdeki değişikliklerin 
				veritabanımızda da gerçekleşmesini sağlıyor. Eğer dataset nesnemize yeni satır 
				ekleseydik, Update metodu DataAdapter nesnesinde tanımlanmış InsertCommand 
				özelliğini arayacak ve bu özellikteki sql komutunu gönderecekti, yine tahmin 
				ettiğiniz gibi silinmiş satırlar için ise DeleteCommand özelliği aranacaktı. 
		
		Bu yazı işin tekniği konusunda sizi en azından bir 
				temel bilgi vermiştir umarım. Yakında bu konularda daha derin bilgiler vermeyi 
				düşünüyorum. 
		
		Şimdilik hoşçakalın.
							| DataSet ds=new DataSet();
									SqlConnection cnn=new SqlConnection("server=local\\vsdotnet;trusted_connection=yes;database=northwind");
									SqlDataAdapter da=new SqlDataAdapter("select 
											* from categories",cnn);
									//veritabanına işlenecek bilgiler için 
											gerekli sql komutumuzu tanımlıyoruz
									da.UpdateCommand=new SqlCommand("update 
											categories set categoryname=@categoryname,description=@description where 
											categoryID=@categoryID",cnn);
									//parametreler tanımlanıyor
									da.UpdateCommand.Parameters.Add("@categoryname",SqlDbType.NVarChar,15,"categoryname");
									da.UpdateCommand.Parameters.Add("@description",SqlDbType.NVarChar,50,"description");
									da.UpdateCommand.Parameters.Add("@categoryID",SqlDbType.Int,0,"categoryID");
									cnn.Open();
									//Datasetimizi güncelliyoruz
									DataRow crow=ds.Tables["categories"].Rows[0];
									crow["categoryname"]=”kategoriadı”;
									crow["description"]=”tanımlama”;
									da.Update(ds,"categories");
									cnn.Close(); |  
                Makale:Dataset’ den Veritabanı Güncellemeleri ADO.NET ve SQL Volkan Öner
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |