Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

Aramada i içinde geçenleri "i" harfini görmüyor bulamıyor

Arama yaptığımda i harfi olanları sadece bulmuyor sebebi ne olabilir?

Sebebi ne olabilir Nasıl düzeltebilirim?

Koldarım

public partial class DinamikAramaSonuc : System.Web.UI.Page
{
    string Str = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        Str = Ayarlar.Temizle(RouteData.Values["Str"].ToString());
        ltrlBaslik.Text = Str + " Arama Sonuçları";

        DataTable dtArama = new DataTable();
        using (var helper = new SqlHelper())
        {
 
           dtArama = helper.CommandText("Select * from Sayfalar Where 
Baslik like '%" + Str + "%' or Detay like '%" + Str + 
"%'").ToDataTable();
            if (dtArama.Rows.Count > 0)
            {
                for (int i = 0; i < dtArama.Rows.Count; i++)
                {
 
                   var tmp = helper.CommandText("select * from 
SayfaResimleri where vitrin = 1 and SayfaId = " + 
dtArama.Rows[i][0]).ToDataRow();
                    if (tmp != null)
                    {
                        dtArama.Rows[i]["Resmi"] = "HaberResimleri/200/" + tmp["Resim"].ToString();
                    }
                    else
                    {
                        dtArama.Rows[i]["Resmi"] = "HaberResimleri/200/yok.png";
                    }
                }
                dlHaberler.DataSource = dtArama;
                dlHaberler.DataBind();
                lblBilgi.Text = dtArama.Rows.Count + "  Adet İlgili Sayfalar bulunmuştur. Sonucu Görüntülemek için tıklayınız.";
            }
            else lblBilgi.Text = Str + " Aradığınız Ürünle ilgili sonuç bulunamadı";
        }
    }
}


TemizleKlas


public static string Temizle(string Metin)
    {
        string deger = Metin;

        deger = deger.Replace("'", "");
        deger = deger.Replace("<", "");
        deger = deger.Replace(">", "");
        deger = deger.Replace("&", "");
        deger = deger.Replace("[", "");
        deger = deger.Replace("]", "");

        return deger;
    }


1 Cevap

0
Sorgunu aşağıdaki gibi Unicode belirteci (N) kullanarak değiştirmeyi dene.

dtArama = helper.CommandText("Select * from Sayfalar Where Baslik like N'%" + Str + "%' or Detay like N'%" + Str + "%'").ToDataTable();
Eğer bu çalışmazsa, veritabanının collation özelliğini de kontrol etmen lazım. Collation Türkçe harfleri destekleyen bir şey olması lazım.

Bir de öneri. Sorguları bir metin şeklinde oluşturmaktansa stok prosedürleri ve parametreleri kullanmalısın. Bu tür sorunların çıkma ihtimali azalacak, çok daha güvenli ve hızlı olacaktır. Ayrıca tekrar tekrar sorgular yapmaya gerek kalmadan bir çok işlemi veritabanı sunucusunda yaptırabilir ve çoklu sonuçlar elde edebilirsin.


Cevaplayan: 13.02.18 21:57
cevapsitesi
102,034p 16ü