SQL Sorgusunu Sayısal Değer Olarak Kullanma

Otomatik hesaplama yapan ya da sütunlar arasında aritmetik işlemler gerektiren bir uygulama üzerinde çalışıyorsanız bir SQL sorgusundan dönen değeri sayısal olarak ifade etmeniz gerekecektir.

Örnek olarak fiyatı belli olan bir ürünün alış miktarı kullanıcıdan alınsın, her ikisi de tablolarda sütun olarak yer alan alış miktarı ve fiyatı bilgisinin çarpımını elde etmek için ExecuteScalar() metotuna başvurmalıyız. Hatta kullanıcı üründen ne kadar aldığını textBox1’e girdiği anda toplam tutarı textBox2’ye yazdıralım.

  private void textBox1_TextChanged(object sender, EventArgs e)
        {
            SqlConnection baglanti = 
            new SqlConnection("server=.;database=StokTakip;Integrated Security=True");
            baglanti.Open();
            SqlCommand cmd = new SqlCommand("select Fiyati from Urunler 
            where UrunAdi = '" + textBox3.Text + "'",baglanti);
            int fiyat = Convert.ToInt32(cmd.ExecuteScalar());
            int tutar = fiyat * Convert.ToInt32(textBox1.Text);
            try
            {
                textBox2.Text = tutar.ToString();
            }
            catch
            {
                MessageBox.Show("Lutfen sayi giriniz.");
            }
            finally
            {
                textBox1.text = "";
            }
            baglanti.Close();
        }

Kodu kısaca açıklarsak; textBox3 ile aldığımız ürün adının fiyatını getirdik. Kullanıcının textBox2 ile girdiği alış miktarı ile çarpmadan önce fiyatın integer değer çevrilmesi gerekiyor. Bu durumun çözümünde ExecuteScalar() metotu oldukça yararlı.

ExecuteScalar() metotu, veritabanından toplam gibi tek bir değeri döndürmeyi sağlayan hızlı bir araçtır. Döndürdüğü değer, Resultset’in ilk elemanınıdır ve bu elemanın hangi tipte olduğu ilk etapta bilinemeyeceği için nesne(object) olarak kabul edilir. Eğer doğrudan int, string gibi farklı bir türe atamak isterseniz  ‘Cannot implicitly convert type ‘object’ to ‘int’. An explicit conversion exists (are you missing a cast?)’ hatası alırsınız. Bu yüzden gerekli çevirme işlemlerini yapmak gerekir.


					
Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s