I have an ASP.net C# site. I feed one of the ListView in that with this code and it's work:
protected void BindData()
{
string forwardedSearchText = Request.QueryString["SearchText"];
string forwardedSearchColumn = Convert.ToString(Session["SearchTitle"]);
string strsql = "Select TbSoore.IdSoore, TbSoore.NameSoore, TbAye.NumberAye, TbAye.IdAye, TbAye.TextAye, TbAye.TextTarjome From TbAye INNER JOIN TbSoore ON TbAye.IdSoore = TbSoore.IdSoore Where FreeText((" + forwardedSearchColumn + "),N' " + forwardedSearchText + "')";
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(strcon))
{
using
(SqlCommand cmdSQL = new SqlCommand(strsql, con))
{
con.Open();
ListViewSearchResults.DataSource = cmdSQL.ExecuteReader();
ListViewSearchResults.DataBind();
}
}
}
Now I want to change the query string style for better security to:
$@"Select TbSoore.IdSoore, TbSoore.NameSoore, TbAye.NumberAye, TbAye.IdAye, TbAye.TextAye, TbAye.TextTarjome From TbAye INNER JOIN TbSoore ON TbAye.IdSoore = TbSoore.IdSoore Where FreeText(({forwardedSearchColumn}),N' @forwardedSearchText ')";
So change BindData() to:
protected void BindData()
{
string forwardedSearchText = Request.QueryString["SearchText"];
string forwardedSearchColumn = Convert.ToString(Session["SearchTitle"]);
string strsql = $@"Select TbSoore.IdSoore, TbSoore.NameSoore, TbAye.NumberAye, TbAye.IdAye, TbAye.TextAye, TbAye.TextTarjome From TbAye INNER JOIN TbSoore ON TbAye.IdSoore = TbSoore.IdSoore Where FreeText(({forwardedSearchColumn}),N' @forwardedSearchText ')";
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(strcon))
{
using
(SqlCommand cmdSQL = new SqlCommand(strsql, con))
{
cmdSQL.Parameters.Add("@forwardedSearchText", SqlDbType.NVarChar).Value = forwardedSearchText;
con.Open();
ListViewSearchResults.DataSource = cmdSQL.ExecuteReader();
ListViewSearchResults.DataBind();
}
}
}
But it doesn't work. I don't get any error but the table is empty.
Can any one help me?