none
ASP.NET içerisindeki SQL sorgusu RRS feed

  • Soru

  • Merhaba arkadaşlar;

    Yapmış olduğum bir sayfada ürünlerimi listeledim. Liste içerisinde filtre uygulamak istiyorum. bununla ilgili olarak yapmak istediğim şey şu;

    2 adet Dropdownlist im var. Bunlar; Dropdownlist1 ve Dropdownlist2. Örnek olarak Dropdownlist1 içindeki verilerden birini seçtiyse sql deki where şartında tek değeri alması lazım. Yani;

    select * from urunler where urun_adi='" + Dropdownlist1 + "'  olması lazım. 

    Eğer ikisini biden seçerse; 

    select * from urunler where urun_adi='" + Dropdownlist1 + "' and urun_fiyati='" + Dropdownlist2+ "' olması gerekiyor. Birden fazla Dropdownlist im olduğu için if else yapısını kullanamıyorum. Çünkü kombinasyon işin içine giriyor ve kod fazlalığı oluyor.

    Bu sorunu kısa yoldan nasıl halledebilirim. Yardımcı olabilirseniz çok sevinirim.

    İyi Çalışmalar.

    25 Ocak 2016 Pazartesi 19:04

Yanıtlar

  • Öncelikle parametresiz sql sorgusu yazmayın bu şekilde baştan yanlış yapıyosunuz.

    İmkanınız var ise entity framework falan kullanın. Bu tarz sorguları yazmak ef ile çok daha basit. Yok bu şekilde katı sql ile yazacağım diyorsanız, tüm filtreleri bir string listesinde toplayıp gerekli kontrollerden sonra eğer bir filtre belirtilmiş ise sorgunuzu oluşturabilirsiniz.


    oguzkurtcuoglu.com


    25 Ocak 2016 Pazartesi 20:08
  • Oğuz'a katılmakla beraber sizin neden dropdown objesini sorguya katmanızı anlamadım. SelectedItem.Value veya SelectedValue vs yok mu bunun? MsSql kullandığını varsayalım. Parametreli örnek:

    var command=new SqlCommand("select * from urunler where urun_adi=@urunAd",new SqlConnection());
    command.Parameters.AddWithValue("@urunAd",dropdownList1.SelectedValue);
    /*
    işlemlerin.
    */


    -

    26 Ocak 2016 Salı 07:04

Tüm Yanıtlar

  • Öncelikle parametresiz sql sorgusu yazmayın bu şekilde baştan yanlış yapıyosunuz.

    İmkanınız var ise entity framework falan kullanın. Bu tarz sorguları yazmak ef ile çok daha basit. Yok bu şekilde katı sql ile yazacağım diyorsanız, tüm filtreleri bir string listesinde toplayıp gerekli kontrollerden sonra eğer bir filtre belirtilmiş ise sorgunuzu oluşturabilirsiniz.


    oguzkurtcuoglu.com


    25 Ocak 2016 Pazartesi 20:08
  • Oğuz bey öncelikle geri bildiriminiz için teşekkür ederim. Sorunumla ilgili olarak biraz daha detaylı bilgi verir misiniz? ben biraz yeniyim bu konuda. Dropdownlist teki verilerimi zaten string ifade olarak alıyorum fakat nasıl listelemem gerekiyor, hangi filtre seçildiğini aktif olduğunu nasıl sorgulatabilirim.
    25 Ocak 2016 Pazartesi 20:46
  • Oğuz'a katılmakla beraber sizin neden dropdown objesini sorguya katmanızı anlamadım. SelectedItem.Value veya SelectedValue vs yok mu bunun? MsSql kullandığını varsayalım. Parametreli örnek:

    var command=new SqlCommand("select * from urunler where urun_adi=@urunAd",new SqlConnection());
    command.Parameters.AddWithValue("@urunAd",dropdownList1.SelectedValue);
    /*
    işlemlerin.
    */


    -

    26 Ocak 2016 Salı 07:04
  • Soner bey, Dropdowlisti  kullanmamdaki amaç listeden bir ürünün adını seçecek. Başka bir Dropdownlist ten de rengini seçecek ve böyle diğer listelerden seçim yaparak kriterlere göre ürünleri listeleyecek.

    Örnek olarak; ürünün adını seçtiğini varsayalım ve Gömlek adlı ürünleri listelemek istediğimizi düşünelim. Sadece ürünün adını seçmişse ürün adına göre filtreleme yapacak fakat ürünün rengini ve adını seçmişse yani; Rengi beyaz olan gömlekleri listelemesini istediğinde SQL cümlesinde and operatörünü varmış gibi algılayıp iki kriteri sağlayan ürünleri getirmesi gerekiyor. Dropdownlist 4-5 tane var her biriyle kombinasyon sağlayarak yazarsam (if else yapısıyla) kod çok uzun oluyor.

    Bu konuda biraz yeniyim kusura bakmayın o yüzden istemeden de olsan sizi yormuş olabilirim. Umarım sıkıntımı tam anlamıyla anlatabilmişimdir.

    26 Ocak 2016 Salı 10:56
  • var query="SELECT * FROM Products ";
    var command=new SqlCommand();
    
    if(ddlCategory.SelectedValue!=null)
    {
     query+="AND CategoryId=@catId ";
    command.Parameters.AddWithValue("@catId",ddlCategory.SelectedValue);
    }
    if(ddlSubCategory.SelectedValue!=null)
    {
     query+="AND SubCategoryId=@subCatId ";
    command.Parameters.AddWithValue("@subCatId",ddlSubCategory.SelectedValue);
    }
    if(ddlStatus.SelectedValue!=null)
    {
     query+="AND Status=@status "; command.Parameters.AddWithValue("@status",ddlStatus.SelectedValue);
    }
    command.CommandText=query;
    command.Connection="yourconnectionString";

    gibi. Sen bunu StringBuilder ile daha güzel yapabilirsin.

    -

    26 Ocak 2016 Salı 12:23