【问题标题】:Add SqlParameter to bind LIKE '%@x%' [duplicate]添加 SqlParameter 以绑定 LIKE '%@x%' [重复]
【发布时间】:2014-08-12 01:45:11
【问题描述】:

我在获取以下代码以正确添加 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();            
    }

【问题讨论】:

标签: c# asp.net parameters sqlcommand


【解决方案1】:

我认为 @vendor 在您的查询中被视为文字而不是参数。

尝试如下定义您的查询:

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

然后像这样添加参数:

cmd.Parameters.AddWithValue("@vendor", search);

【讨论】:

  • 宾果游戏,感谢您的快速回复。
猜你喜欢
  • 2020-08-16
  • 1970-01-01
  • 2021-01-07
  • 2012-10-04
  • 2017-01-20
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
相关资源
最近更新 更多