我想做一个多条件的模糊查询,代码如下
protected void Button1_Click(object sender, EventArgs e)
    {
        string strsql = "";
        strsql = "SELECT bookId FROM Book WHERE 1=1";
        if(this.TextBox1.Text !="")
        {
            strsql += "AND bookName like'%" + this.TextBox1.Text.ToString() + "%'";
        }
        if(this.TextBox2.Text !="")
        {
            strsql += "AND author like'%" + this.TextBox2.Text.ToString() + "%'";
        }
        if(this.TextBox3.Text !="")
        {
            strsql += "AND ISBN like'%" + this.TextBox3.Text.ToString() + "%'";
        }
        SqlDataSource1.SelectCommand = strsql;
        GridView1.DataBind();
    }
然后就出现了在选定的数据源上未找到名为“bookName”的字段或属性
但是,我的Book表中的确是有bookName这一列,而且最开始我使用的是SelectCommand="SELECT * FROM [Book]",应该说不会存在漏选的情况,但是还是出现了这样的错误,请问这是什么原因造成的呢,而且怎样修改,请各位指点一下 谢谢了

解决方案 »

  1.   

      strsql += "AND bookName like'%" + this.TextBox1.Text.ToString() + "%'";这里的后边都省了空格
       strsql += " AND bookName like'%" + this.TextBox1.Text.ToString() + "%' ";
    这样就不会出问题了
      

  2.   


    ++++并且建议使用 参数化查询,防止SQL脚本注入攻击.
      

  3.   

    已经照你说的进行修改 protected void Button1_Click(object sender, EventArgs e)
        {
            string strsql = "";
            strsql = "SELECT bookId FROM Book WHERE 1=1";
            if(this.TextBox1.Text !="")
            {
                strsql +=" AND bookName like'%" + this.TextBox1.Text.ToString() + "%' ";
            }
            if(this.TextBox2.Text !="")
            {
                strsql +=" AND author like'%" + this.TextBox2.Text.ToString() + "%' ";
            }
            if(this.TextBox3.Text !="")
            {
                strsql +=" AND ISBN like'%" + this.TextBox3.Text.ToString() + "%' ";
            }
            SqlDataSource1.SelectCommand = strsql;
            GridView1.DataBind();
        }可是还是不行,可以请你帮忙再看一下吗
      

  4.   

    SqlDataSource1可以要这样吧
    SqlDataSource1.SelectCommand = strsql; 
    SqlDataSource1.DataBind();
      

  5.   

    你查询的结果 放哪了? 绑定到 GridView 上了? 是不是GridView上绑定了 bookName字段。
      

  6.   

     strsql = "SELECT bookId FROM Book WHERE 1=1";
    你只查询bookId,怎么可能有BookName??
    把bookName添加进去
     strsql = "SELECT bookId,bookName,........... FROM Book WHERE 1=1";