如下代码:我把 PageItem当做id值传入时就好使,而传入strWhere时就不能传入参数呢?public partial class testPage1 : System.Web.UI.Page
{
    private int PageItem = 10;
    private OleDbConnection con = null;
    protected OleDbCommand cmd = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        bindData();
    }
    private void bindData()
    {
        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\City.mdb;";
        con = new OleDbConnection(connectionString);
        con.Open();
        cmd = new OleDbCommand();
        cmd.Connection = con;
        string strSql = string.Empty;        //strSql = "SELECT TOP "+PageItem.ToString()+" name FROM area WHERE id=@id";
        //cmd.Parameters.AddWithValue("@id", PageItem); 这个就好使        string strWhere = "'%美%'";
        strSql = "SELECT  * FROM area Where [name] like @strWhere";//这个就不好使        cmd.Parameters.AddWithValue("@strWhere", strWhere);
        cmd.CommandText = strSql;
        OleDbDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            Response.Write(dr[0] + "<br>");
        }
    }
}

解决方案 »

  1.   

    strWhere = "美"; 
    "SELECT  * FROM area Where [name]  like N'%'+@strWhere+'%'" 
      

  2.   

    先看这个sql语句:
    select * from area where name like '%aa%'
    %% 是存在于单引号里面的
    也就是说当用占位符的时候,%%也是存在'' 中
    string strWhere = "'%美%'"; 
    上面的就不行string sql="select * from area where name like '%"+@+"%'";
      

  3.   

    string strWhere = "%美%"; 
    不要自己加单引号
    如果你给的数据类型是string
    那么数据库处理的时候 会自动加上的
    你可以跟踪一下
    最后@strWhere的值是''%美%''这样子
    如果你加了单引号
    最终的值编程'''%美%'''
    拼接出来就报错了