Добавьте SqlParameter для привязки LIKE '%@x%'

У меня возникла проблема с получением следующего кода для правильного добавления параметра SqlCommand @vendor. По какой-то причине передаваемый запрос всегда выглядит следующим образом:

select TOP 500 * 
from [mike_db].[dbo].[na_pe_sql_import] 
where vendname like '%@vendor%';

Это работает, если я настрою запрос таким образом, но я знаю, что это плохая практика.:

string strQuery = "select TOP 500 * from [mike_db].[dbo].[na_pe_sql_import] where vendname like '%"+txt_search.Text.ToString()+"%';";

Вот код:

    protected void Search_Click(object sender, EventArgs e)
    {   
        string search = txt_search.Text.ToString();
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["mike_db"].ConnectionString;

        SqlConnection con = new SqlConnection(strConnString);
        con.Open();

        string strQuery = "select TOP 500 * from [mike_db].[dbo].[na_pe_sql_import] where vendname like '%@vendor%';";

        cmd = new SqlCommand(strQuery, con);
        cmd.Parameters.AddWithValue("vendor", search);

        txt_search.Text = string.Empty;

        DataSet ds = new DataSet();

        da = new SqlDataAdapter(cmd);
        da.Fill(ds);

        My_Repeater.DataSource = ds;
        My_Repeater.DataBind();

        con.Close();            
    }

person 66Mhz    schedule 12.08.2014    source источник
comment
..addwithvalue(@vendor,search);??   -  person zxc    schedule 12.08.2014
comment
На самом деле я сначала попробовал @vendor и не смог заставить его работать. Этот пример заставил меня подумать о том, чтобы попробовать без @ - in-adonet-c.aspx" rel="nofollow noreferrer">nullskull.com/faq/979/   -  person 66Mhz    schedule 12.08.2014
comment
Связанный: stackoverflow.com/questions/6581525/ , stackoverflow.com/questions/665129/   -  person user2864740    schedule 12.08.2014
comment
Вопрос решен, спасибо за помощь!   -  person 66Mhz    schedule 12.08.2014


Ответы (1)


Я думаю, что @vendor рассматривается в вашем запросе как литерал, а не как параметр.

Попробуйте определить запрос следующим образом:

string strQuery =
   "select TOP 500 * from [mike_db].[dbo].[na_pe_sql_import] where vendname like '%' + @vendor + '%'";

Затем добавьте параметр следующим образом:

cmd.Parameters.AddWithValue("@vendor", search);
person Grant Winney    schedule 12.08.2014
comment
Бинго, спасибо за быстрый ответ. - person 66Mhz; 12.08.2014