Asp.net SqlConnection Select Komutu

Asp.net sayfamızda kodumuzu yazıyoruz. Ben SqlConnection mimari kullandıgım için SqlConnection mimari ile yazacağım. Ama isteyen olursa Entity Framework olarak kodlamayı yazabilirim.

Veritabanımızdaki Alanları bu sayfada oluşturmuştuk. Yani urunAd, urunFiyat, urunResim, urunAciklama.



Senaryomuzu kuralım. Sqlde urun tablomuz mevcut ve içinde ürün resmimizi, ürün adımızı, ürün fiyatını, ürün açıklamasını bulunması için 1 adet image, 3 adet label ekliyoruz sayfamıza. İsimlerini urunImage, lblUrunAdi, lblFiyat, lblAciklama olarak oluşturuyoruz. Ve aşağıdaki kodla veritabanımızdan sayfamıza veri çekiyoruz.

Kodumuz:
//Bağlantımızı açıyoruz
SqlConnection con= new SqlConnection("server=.;database="VeritabanımızınAdı"; trusted_connection=true;");

//Sql komudumuzu giriyoruz
SqlCommand com=new SqlCommand("Select urunAd,urunFiyat,urunAciklama,urunResim from urunler",con);
//Bağlantıyı açıyoruz,
con.Open();
//Okuması için dataReaderi açıyoruz.
SqlDataReader dr= com.ExecuteReader();
//Sayfamıza yazıyoruz.
lblUrunAdi.Text=dr["urunAd"];
lblFiyat.Text=dr["urunFiyat"];
lblAciklama.Text=dr["urunAciklama"];
urunImage.ImageUrl=dr["urunResim"];
//dataReader ve sqlConenction kapatıyoruz.
dr.Close();
con.Close();


İsmail Gürsoyun sitesinden ExecuteReader, ExecuteScaler, ExecuteNonQuery açıklamasını paylaşıyorum.

ExecuteReader : ExecuteReader bir veya birden fazla veri satırının döneceği durumlarda sorgular ve stored procedure’ler için kullanılabilir. ExecuteReader bir SqlDataReader nesnesi dönmektedir.SqlDataReader sorgu sonucunda satır satır bilgi almak için kullanılır, ileri yönlüdür ve sadece okunabilirdir. SqlDataReader kullanmak veritabanından verileri okumada kullanılan en hızlı yoldur ancak bu yöntemle veriler üzerinde değişiklik yapılamaz, veriler güncellenemez ve veriler rastgele bir şekilde sıralanamaz.
SqlDataReader kullanıldığında veritabanındaki tüm bilgiler okunana kadar veritabanı bağlantısını açık tutar. Bu da bir problemdir, çünkü limitli bir bağlantı durumunda sürekli olarak SqlDataReader serveri meşgul edecektir. Aynı anda uygulamamıza bağlanan bir çok kullanıcı dolayısı ile hata alacaktır, veri görüntüleme yapamayacaktır. Bu sorunu azaltmak için SqlDataReader üzerinde elde ettiğimiz sonuçları bir DataTable nesnesine aktarır ve buradan verilerimizi okuyabiliriz. DataTable verileri herhangi bir açık veri tabanı bağlantısı olmaksızın saklayabilen nesnedir. Yani veritabanından bilgilerimizi SqlDataReaderile alırız bir DataTable nesnesine aktarırız ve bağlantmızı kapatırız. Böylelikle gereksiz yere server meşgul edilmemiş olur. DataTable için ileride makale yazacağım.
ExecuteScalar : SQL server üzerinden sadece tek bir veri dönecek ise kullanılır. Örneğin bir şirkette çalışanların sayısı, ya da bir markette süt ürünlerinin toplam stok sayısı gibi durumlar. Bu metotla geriye bir Object yani bir nesne döner. Ve biz bu nesneyi istediğimiz bir veri türüne dönüştürebiliriz.
ExecuteNonQuery : Veri ekleme, güncelleme işlemleri için kullanılan metottur. Geri dönen değer ise veritabanı üzerinde etkilenen verilerin satır sayısıdır.

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ve Sql ile Bağlantılarda Alınan Hatalar

MVC route .html uzantılı sayfaya yönlendirme