Etiket Arşivi: ExecuteReader kulanımı

C# ADO.NET

Listview’de Execute Scalar kullanarak veri tabanından veri çekme işlemini yapacağız. Tasarımımızı aşağıdaki gibi yapıyoruz. GroupBox’ın içinde 1 buton 1 listview ekleyip listview’in üstündeki ok işaretine tıklayıp edit colums kısmından Ad ve Soyad ekleyip, view yani görünümünü Details yapınca kolonlarımız gözükecektir.
ExecuteScalarTasarım işleminden sonra butona çift tıklayıp click eventine kodlarımızı yazmaya başlıyoruz.

private void button1_Click(object sender, EventArgs e)
{

SqlConnection baglanti = new SqlConnection(); // Sql Bağlantı class'ımızın instance'ını alıyoruz.
//Bağlanacağımız Server ismi ve veri tabanımızın ismini ConnectionString ile belirtiyoruz.
baglanti.ConnectionString=("Server=.;Initial Catalog=Northwind;Integrated Security=true;");
baglanti.Open(); // Bağlantımızı açıyoruz.

// Sorgumuzu SqlCommand içinde yazıyoruz (Baş harfi a olanı getir dedim.)
SqlCommand sorgu = new SqlCommand("Select Firstname From employees where firstname like 'a%' ",baglanti);
// ExecuteScalar metodunu tek değer döndüreceğimiz zaman kullanıyoruz bize object türünde sonuc döndüreceği için sonuc diye object türünde bir değişkene atıyoruz.
object sonuc = sorgu.ExecuteScalar();

//ListView'de göstermek için listview classının instance'sini alıyoruz.
ListViewItem list = new ListViewItem();

list.Text = sonuc.ToString(); //List'in textine sonuc değişkenimizi atıyoruz.

//Yukarıdaki yaptıklarımızla listview'in 1. kolonunu doldurduk şimdi 2. kolonu dolduralım

//SqlCommand ile 2. sorgumuzu yazıyoruz
SqlCommand sorgu2 = new SqlCommand("Select Lastname from employees where firstname like 'a%'",baglanti);
object sonuc2 = sorgu2.ExecuteScalar();
list.SubItems.Add(sonuc2.ToString()); //Bu sefer list'in SubItems'ına yani alt elemanına ekliyoruz.

listView1.Items.Add(list); //En sonra listview'de list'i ekleyip tüm değerlerimizi görebiliyoruz.
}

Yukarıda tek veri dönmesini istediğimiz için ExecuteScalar kullandık, Bu sefer ExecuteReader ile result bir değer döndürecek işlem yapacağız. Yukarıdaki işlemde tasarım ile ilgili gerekli bilgileri verdiğim için burada tekrar tasarım kısmını anlatmayacağım.

ExecuteReade

private void button2_Click(object sender, EventArgs e)
{

SqlConnection baglanti = new SqlConnection(); //Sql Bağlantı class'ımızın instance'ını alıyoruz.
baglanti.ConnectionString = ("Server=.;Initial Catalog=Northwind;Integrated Security=true");
baglanti.Open();

SqlCommand cmd = new SqlCommand("Select CustomerID,CompanyName from Customers",baglanti);
//ExecuteReader bize SqlDataReader türünde bir değer döndüreceği için sonuc adında bir değişkene komudumuzu atıyoruz.
SqlDataReader sonuc= cmd.ExecuteReader();

while (sonuc.Read()) //Okunacak veri olduğu sürece while döngüsünde dönecek
{
ListViewItem list = new ListViewItem(); //Listview'e eklemek için instance alıyoruz.
list.Text = sonuc[0].ToString(); //list'in textine 0. indekteki değeri yani customerID yi yazdırıyoruz.
list.SubItems.Add (sonuc[1].ToString()); //listin alt elemanına 1. indexteki değeri yazdıyoruz.

listView2.Items.Add(list); // List'i listview'de gösteriyoruz.
}
}

Bu sefer ExecuteNonQuery yani insert delete update gibi işlemlerde sonuc döndürmeyen komutu işleyen metodu kullanacağız. Tasarım aşağıdaki gibi 2 adet textbox’a ad ve soyad bilgisi gireceğiz butona bastığımızda Employees tablosuna eklemiş olacağız.

Employees

private void button3_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "") //TextBoxlar'a değer girilmediyse işlem yaptırmayacak.
{
MessageBox.Show("Lütfen Boş Alanları Doldurunuz.");
}
else
{
try
{

// Calisan diye bir class oluşturup içine Ad ve Soyad olarak 2 tane property ekledik ve aşağıda class'ımızın instance'ını aldık
Calisan cls = new Calisan();
cls.Ad = textBox1.Text;
cls.Soyad = textBox2.Text;

SqlConnection baglan = new SqlConnection(); //Sql Bağlantı class'ımızın instance'ını alıyoruz.
baglan.ConnectionString = ("Server=.;Initial Catalog=Northwind;Integrated Security=true");
baglan.Open();

//SqlCommand ile ekleme yapacağımız tabloyu ve değerleri nereden alacağını yazıyoruz.
SqlCommand sorgu = new SqlCommand("Insert Into Employees(Firstname,Lastname) values('" + textBox1.Text + "','" + textBox2.Text + "')", baglan);

sorgu.ExecuteNonQuery();

//String formatı kullanarak ekrana eklenen kişiyi mesaje olarak gösteriyoruz.
string sonuc = string.Format("{0} {1}", textBox1.Text, textBox2.Text);
MessageBox.Show(sonuc + " Veri Tabanına Eklenmiştir.");

baglan.Close();
}

//Hata oluşması durumunda catch bloğu çalışacak ve bize message gösterecek.
catch (Exception ex)
{
MessageBox.Show("Hata Oluştu", ex.Message);
}
}
}