Bunu Mu Demek İstediniz?
Projelerimize daha profesyonel bir yapı kazandırmak ve daha kullanıcı dostu bir yapı hazırlamak için kullanmanızı tavsiye ettiğim bunu mu demek istediniz? özelliği. Google’da sık sık karşımıza gelen bu ekranı sql server’in Difference özelliği ile çok rahat kullanabiliriz.
Difference iki melime arasında benzerlik durumuna göre 0 ile 4 arasında bir değer döndürür.Bu değere göre arama sonucunda benzerlik değerine göre kayıtları listeler. 0 en az 4 ise en çok benzerlik oranına sahip kayıtları getirmemize yarayan değerleri verir. Google bunumu demek istediniz yapısında kendi gelişmiş algoritmalarını kullanmaktadır.
Yaptığım örnek proje aşağıdaki gibidir. Aspx sayfası:
[csharp]
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtAra" runat="server"></asp:TextBox>
<asp:Button ID="btnAra" runat="server"
Text="Ara" onclick="btnAra_Click" />
</div>
<asp:Repeater ID="rpListe" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<a href="#">
<%#Eval("ProductName")%></a>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Label ID="lblOneri" runat="server" Text=""></asp:Label>
</form>
</body>
[/csharp]
Kod sayfamızda ise:
[csharp]
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["baglanti"].ConnectionString);
protected void btnAra_Click(object sender, EventArgs e)
{
AramaYap(txtAra.Text.Trim());
}
void AramaYap(string kelime)
{
if (con.State!=ConnectionState.Open)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("select * from Products where ProductName like ‘%’+ @kelime+’%’",con);
cmd.Parameters.AddWithValue("@kelime", kelime);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Clear();
dt.Load(dr);
if (dt.Rows.Count>0)
{
lblOneri.Text = "";
rpListe.DataSource = dt;
rpListe.DataBind();
}
else
{
BunuMuDemekIstediniz(kelime);
rpListe.DataSource = null;
rpListe.DataBind();
}
con.Close();
}
void BunuMuDemekIstediniz(string kelime)
{
if (con.State!=ConnectionState.Open)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("select top 1 * from Products where Difference(ProductName,@Kelime)>=3", con);
cmd.Parameters.AddWithValue("@Kelime", kelime);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Clear();
dt.Load(dr);
if (dt.Rows.Count>0)
{
lblOneri.Text = "";
lblOneri.Text = string.Format("Bunu mu demek istediniz:<a href=#> <u>{0}</u></a>", dt.Rows[0]["ProductName"].ToString());
}
else
{
lblOneri.Text = "Aramanıza uygun sonuç bulunamadı…";
}
}
[/csharp]
güzel bir örnek,güzel bir konu bak bu :)
:) Çok kullanışlı bir fonksiyon programlama tarafında programcının yükünü sıfıra indiriyor. Bu fonksiyon olmasa programlama tarafında çok üst düzey komplex algoritmalar ile bunu mu demek istediniz mantığı geliştiriyor.
Bunu mu demek istediniz : Çok faydalı oldu benim için :)
Çok güzel açıklanmış teşekkür ederim mutlaka deneyeceğim.
Rica ederim. Faydalı olmasına sevindim.
Difference iki melime arasında
Bunumu demek istediniz “Difference iki kelime arasında ” :)
:)