我想做一个多条件的模糊查询,代码如下
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]",应该说不会存在漏选的情况,但是还是出现了这样的错误,请问这是什么原因造成的呢,而且怎样修改,请各位指点一下 谢谢了
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]",应该说不会存在漏选的情况,但是还是出现了这样的错误,请问这是什么原因造成的呢,而且怎样修改,请各位指点一下 谢谢了
strsql += " AND bookName like'%" + this.TextBox1.Text.ToString() + "%' ";
这样就不会出问题了
++++并且建议使用 参数化查询,防止SQL脚本注入攻击.
{
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();
}可是还是不行,可以请你帮忙再看一下吗
SqlDataSource1.SelectCommand = strsql;
SqlDataSource1.DataBind();
你只查询bookId,怎么可能有BookName??
把bookName添加进去
strsql = "SELECT bookId,bookName,........... FROM Book WHERE 1=1";