我做毕业设计的时候碰到一个问题:数据库错误,错误原因:在关键字 'and' 附近有语法错误。以下是后台代码,麻烦大家帮忙看看,由于是新人,没有积分,原谅一下啊。
protected void btnSearch_Click(object sender, EventArgs e)
{ string SchoolStr = "", DepartStr = "", SpecialStr = ""; Session["SearchStr"] = "SELECT 班级编号, 班级名称 FROM class"; if (DropDownList1.SelectedValue.ToString() != "")
{
SchoolStr = " and 学院编号=" + Convert.ToInt32(DropDownList1.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SchoolStr;
if (DropDownList2.SelectedValue.ToString() != "")
{
DepartStr = " and 学院编号=" + Convert.ToInt32(DropDownList2.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + DepartStr;
if (DropDownList3.SelectedValue.ToString() != "")
{
SpecialStr = " and 专业编号=" + Convert.ToInt32(DropDownList3.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SpecialStr;
} }
}
GridViewBind(Session["SearchStr"].ToString());
}
protected void btnSearch_Click(object sender, EventArgs e)
{ string SchoolStr = "", DepartStr = "", SpecialStr = ""; Session["SearchStr"] = "SELECT 班级编号, 班级名称 FROM class"; if (DropDownList1.SelectedValue.ToString() != "")
{
SchoolStr = " and 学院编号=" + Convert.ToInt32(DropDownList1.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SchoolStr;
if (DropDownList2.SelectedValue.ToString() != "")
{
DepartStr = " and 学院编号=" + Convert.ToInt32(DropDownList2.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + DepartStr;
if (DropDownList3.SelectedValue.ToString() != "")
{
SpecialStr = " and 专业编号=" + Convert.ToInt32(DropDownList3.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SpecialStr;
} }
}
GridViewBind(Session["SearchStr"].ToString());
}
你可以先吧你处理的都处理完。最后再用一个session存取你的东西就OK了。
第一个select * from 表明 后的第一个条件要有Where而且还用不到and 第二个才用and的。
好好整理你的代码。
protected void btnSearch_Click(object sender, EventArgs e)
{
string SchoolStr = "", DepartStr = "", SpecialStr = ""; Session["SearchStr"] = "SELECT 班级编号, 班级名称 FROM class"; if (DropDownList1.SelectedValue.ToString() != "")
{
SchoolStr = " where 学院编号=" + Convert.ToInt32(DropDownList1.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SchoolStr;
if (DropDownList2.SelectedValue.ToString() != "")
{
DepartStr = " and 系别编号=" + Convert.ToInt32(DropDownList2.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + DepartStr;
if (DropDownList3.SelectedValue.ToString() != "")
{
SpecialStr = " and 专业编号=" + Convert.ToInt32(DropDownList3.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SpecialStr;
} }
}
GridViewBind(Session["SearchStr"].ToString());
}
上面之前写错了一个,把系别编号写成学院编号了。不好意思啊
谢谢你的提醒,不过我把第一个and改成WHERE后,发现能用了,至于你说的“session是个对象,他就不能和字符串的SpecialStr相加的啊”好像没有这方面的问题啊,以下是改完之后的代码,你看看
protected void btnSearch_Click(object sender, EventArgs e)
{
string SchoolStr = "", DepartStr = "", SpecialStr = ""; Session["SearchStr"] = "SELECT 班级编号, 班级名称 FROM class"; if (DropDownList1.SelectedValue.ToString() != "")
{
SchoolStr = " where 学院编号=" + Convert.ToInt32(DropDownList1.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SchoolStr;
if (DropDownList2.SelectedValue.ToString() != "")
{
DepartStr = " and 系别编号=" + Convert.ToInt32(DropDownList2.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + DepartStr;
if (DropDownList3.SelectedValue.ToString() != "")
{
SpecialStr = " and 专业编号=" + Convert.ToInt32(DropDownList3.SelectedValue.ToString());
Session["SearchStr"] = Session["SearchStr"] + SpecialStr;
} }
}
GridViewBind(Session["SearchStr"].ToString());
}