跨页面查询问题求教
我想做这样一个效果,a页面是查询页,b页面有一个gridview,b页面能根据a页面的查询条件显示出相应的数据。查询页中有三种条件(书名、作者、ISBN),前面两个已经成功实现,但是ISBN这一项,即使我输入的是数据库中已存在的ISBN号,也无法查询到相应的书。附上代码,希望大家能帮忙看下问题出在哪里
protected void Button1_Click(object sender, EventArgs e)
{
string strsql = "";
strsql = "SELECT * 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() + "%' ";
}
Response.Redirect("Default3.aspx?StrWhere=" + strsql);
}
protected void Page_Load(object sender, EventArgs e)
{
string StrWhere = Request["StrWhere"].ToString();
SqlDataSource1.SelectCommand = StrWhere;
GridView1.DataBind();
}
而且你这样传sql,很容易给别人攻击,到时你哭都来不及。
建议你,书名、作者、ISBN分别get方式传到b页面,然后在b页面构建你的sql语句!
记得分全部给我。
[解决办法]
像你这样 直接把操作语句暴露在地址栏还是第一次见
即便是可行,地址栏传值也是有长度限制的
你可以传递参数过去,而不是查询语句
或者在本页面直接查出数据,利用sesseion传递
[解决办法]
直接把三个参数穿过去,之后在B页面查询绑定
或者把查询结果保存在session
之后直接转型绑定