SENDE YAZ , FARKIN OLSUN...

26 Mayıs 2010 Çarşamba

SqlDataReader Kullanımı



Selamlar ;
Bazen tabloları hazır bir şekilde veri tabanından alıp , olduğu gibi DataGridView içerisine yerleştirmeye çalışırız , bu tip işlemleri SqlDataAdapter ve DataSet kullanarak çok rahat birşekilde gerçekleştirebiliriz.Ama bu yöntemle , doldurduğumuz DataGridView Kolonları(dikey) veri tabanındaki tuple (Aynı Türden Veriler Demeti) isimleriyle Data Grid'e yerleşirler , yada bazen bütün tuple ları DataGridView e eklemek istemeyiz , sadece bazılarını göstermek isteriz.Bunları aynı mantıkla yapmak mümkün fakat SqlDataReader bu konuda büyük rahatlık sağlıyor.SqlDataReader while döngüsü kullanılarak içerisinde tuple ları tek tek çektiği için , ayrı ayrı yerleştirme imkânı da sağlamış oluyor.Yani 3.kolondaki verilerle 7.kolondaki verilerin yerini çok rahat değiştirebilirsiniz.Sadece DataGridView kullanımında değil tabiki , her türlü veri çekme işleminde çok kolay bir şekilde SqlDataReader kullanabiliriz.Mesela bir combobox 'u , veri tabanından çekeceğim illerin ismiyle doldurmak istedim diyelim.Hemen Reader kullanımını burda kısaca 2 -3 satır göstericem fakat alt tarafda resmi yerleştirdim , oraya tıklayarak Kodları inceleyebilirsiniz.
Örnek:
Tabiki öncelikle SqlConnection oluşturuyoruz
SqlConnection baglantim = new SqlConnection("Data Source=Bilgisayarınızınadı;Initial Catalog=DataBaseAdı;Integrated Security=True");
daha sonra bu baglantıyı açmamız gerek;
baglantim.open();
şimdi de veri tabanına ne yapmak istediğimizi belirticek olan SqlCommand satırını yazalım;
SqlCommand cmd=new SqlCommand("select * from iller",baglantim);

Sonrasında myreader isimli SqlDataReader oluşturuyoruz;
SqlDataReader myreader;
Query imizi içine yazıp yada üst te bir string içerisine yazıp SqlCommand içerisinde o stringi yazıp , cmd.ExecuteNonQuery(); şeklinde çalıştırabiliriz; fakat bu noktada
değişen bir şey var.Direk olarak Query mizi çalıştırmak yerine , myreader isminde oluşturduğumuz SqlDataReader objemize atıyoruz.Yani myreader=cmd.ExecuteReader(); diyoruz.
Daha sonra while(myreader.Read()) şeklinde bir döngü oluşturuyoruz.Yani myreader isimli objemiz , veriler bitene kadar tek tek verileri alıcak.
Bu döngü içerisinde , her seferinde gelen verileri ne yapacagımızı yazıyoruz.Mesela comboBox ımıza veri tabanımızda kayıtlı olan illerimizi yerleştirelim.

while( myreader.Read() )//bitene kadar okuyacak
{
comboBox1.Items.Add(myreader.GetValue(0).ToString());
}



İllerimizi combobox ımıza yerleştirmiş olduk.Yukarıda SqlDataReader'ın degerlerini GetValue fonksiyonu ile aldık.Dikkat ettiyseniz myreader.GetValue(0).ToString() yazdık.Yani iller isimli tablodaki ilk tuple ı aldık.Varsayalım ki ,veri tabanımızda öğrenciler isimli bir tablomuz var.Tablomuzda isim,soyisim,yas,cinsiyet olsun.Biz sadece Soyisim ve yaşı almak istiyoruz; o zaman myreader.GetValue(1) diyerek soyismi, myreader.GetValue(2) diyerek yaşı çekebiliriz.Daha sonra bu aldığımız değerleri while döngüsü içerisinde DataGridView ' e
dataGridView1.Rows.Add(myreader.GetValue(1).ToString(),myreader.GetValue(2).ToString());
diyerek DataGridView ' e sadece Soyisim ve Yaşı eklemiş olduk.


Alt kısımda ki resime tıklayarak , comboBox için kodların Visual Studio üzerinde ki görünümünü büyütebilirsiniz.Bu kodları aynı mantıkla DataGridView kullanımı yada kendi isteğinize göre de modifiye edebilirsiniz.



Umarım Yardımcı Olmuştur. Sende Yaz , Farkın Olsun...

25 Mayıs 2010 Salı

Tek Bir Fonksiyonla Bütün TextBox ları Temizlemek


Selamlar,Bazen yazdığımız programlarda o kadar çok TextBox oluyor ki,"temizle" butonunu oluşturmaya korkuyor insan.Ama korkmayın:)Yazacağımız küçük bir fonksiyonla bu dertten kurtuluyoruz.


Nasıl mı? Şu şekilde ;
TextBox larımızın bulunduğu forma çift tıklayalım(Yada Solution Explorer'dan sağ Tıklayıp View Code da diyebilirsiniz).


Formun kod kısmına girmiş bulunduk.Burada fonksiyonumuzu oluşturalım.


Buyrun Altta Direk Kopyalanıp Kullanılabilir Halini Veriyorum...


private void temizle()
{

foreach (Control c in Controls)
{

if (c is TextBox)
if (c.Text != "")
c.Text ="";
}
}

Fonksiyonumuzu oluşturduktan sonra , hangi buton tıklandığında çalışacak ise o butonun Click_Event kısmında çağırıyoruz.

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

Daha net anlaşılması açısından alttaki yorumlanmış halinede bakabilirsiniz.

private void temizle() // Temizleme Fonksiyonumuz

{
foreach (Control c in Controls)//control tipinde c diye bir değişken oluşturduk ve foreach ile tek tek formumuzdaki bileşenleri çekiyoruz

{
if (c is TextBox)//if içerisinde gelen parametre bir textbox mı diye kontrol ediyoruz , TextBox ise İçerdeki "if" yapısına giriyoruz
if (c.Text != "")//Eğer gelen Textbox boş değil ise
c.Text ="";//Gelen TextBox'un textini boş yaptık...
}

}
private void button1_Click(object sender, EventArgs e)

{
temizle();//Butonumuza Tıkladığımız anda bu fonksiyon çalıştırılacak.
}

Bu kodu ComboBox , CheckBox , vs. olarak modifiye edebilirsiniz.Kendinize Göre Uyarlayıp Şekillendirebilirsiniz.
İşte Bu Kadar Basit :)
Umarım Faydalı Olmuştur.Sende Yaz , Farkın Olsun!!!

Can Güldoğan'dan DataGridView Kullanımı




Öncelikle Sevgili Kardeşimin Blog Adresini Eklemek İstedim...Oradan Da Detaylı Bilgi Alabilirsiniz.
http://devexper.blogspot.com

Datagridview Kullanımı
Daha önceki yazımda database'i projemize ekledik.. Şimdi bir form application da database'imizdeki verileri nasıl çekeceğiz ve kullanıcıya göstereceğiz onu anlatacağım..

Tabi öncelikle biraz basitçe bazı ön şeyler anlatacağım (profesyöneller kızacak )

1- Öncelikle bir sql server a bağlantı yapmamız lazım..
2- Bağlantı yaptıktan sonra bir ADAPTOR oluşturmamız lazım..
3- Bir DATA SET oluşturmamız lazım ( ki bu DATASET'ı gridview değerleri göstermek için kullanıyor yani geçici bir yazboz tahtası olarak düşünelim)
4- ADAPTOR'umuz DATASET'imizin içini dolduran tek araç (Yani bu yazboz tahtasını adaptör kullanıyor birtek). Bu araç data setimizi doldursun..
5- DATAGRIDVIEW 'ımızda bu ADAPTORUN yazdığı DATASET'ın içindekileri bize göstersin..

Şimdi ben size öncelikle ilgili c# kodunu veriyorum..



string sql = "select * from student"; // tipik bir sql komutu

SqlConnection connection = new SqlConnection("Data Source=sunucu_adı;Initial Catalog=database_adi;Integrated Security=True"); // Bağlantı Connection String ile yapıldı
connection.Open();

SqlDataAdapter adaptor= new SqlDataAdapter(sql, connection);
// adaptor oluşturduk ve içine sql ile connection nesnelerini attık..
DataSet can = new DataSet();
// can diye bir data set oluşturdum
adaptor.Fill(can, "xx");
//adaptor can data setinin için sql sorgumuzun cevabı ile doldurdu ve xx diye bir tabloya attı
dataGridView1.DataSource = can.Tables[0];
// data gridview1 imizin data soruce u can datasetimizin ilk tablosu olsun dedik..
connection.Close();
// bağlantımızı sonlandırdık..

Yukarıdaki kodu kısaca size açıkladım.. Açıkçası burada yazmak bek kolay olmuyor..
Şimdi bir windows application oluşturup bu kodu deneyelim..

Öncelikle bir buton ve data gridview ekleyelim




Amacımız butona basınca sql sorgumuzun çalışması... Şimdi button1 e tıklayıp kodumuzu ekleyelim..




Eklediğimiz kod yukarıdakinin aynısı ama bir tek fark var
sunucu adınız ve data base adınız farlı olabilir
ben sunucu olarak localhost yazdım ve data base'imde school sizin kiler farklı olabilir..
Artı bu şekilde data base'e erişmek istiyorsanız ( Ki ben bir çok program yazdım bu şekilde birçok değeri rahatlıkla işleye biliyorum.. Neyse Konu yb değil )

using System.Data.SqlClient;

satırını başa eklemeyi unutmayın (ki resimde altını kırmızı çizdim)

neyse efendim tüm bunları yaptıktan sonra programı run yapalım



form önce bu şekilde görünüyor..
Biz kodumuzu butona tıklanınca değişiklik olsun diye yazdık..
Butona tıklayınca aşağıdaki sonucu almanız içten bile değil :))



İlerleyen günlerde datagridview hakkında daha ileri seviye şeyler anlatacağım..
Tavsiyem internetteki videoları da izlemeniz.
Çokta sıfıra inerek anlatmıyorum biliyorum ama blogger ortamında yazı yayınlamak hemde istediğiniz gibi yayınlamak pekte kolay değil açıkçası..
Biraz birşeyler bilen arkadaşlar için çok kolay gelecek bu yazılar.. Ama sıfır bilen arkadaşlar kendilerini epeybir geliştirmek zorundalar.. Çünkü hiç visual c# bilmeyen arkadaşlar değilde bilipte bu konularda eksikliği olan projesi olan arkadaşları hedefleyip onlara göre yazıyorum..

İyi Çalışmalar..