我做毕业设计的时候碰到一个问题:数据库错误,错误原因:在关键字 '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());
    }

解决方案 »

  1.   

    我怎么没有发现"where"关键字啊!
      

  2.   

    错误很多啊#35.session是个对象,他就不能和字符串的SpecialStr相加的啊。
    你可以先吧你处理的都处理完。最后再用一个session存取你的东西就OK了。
    第一个select * from 表明 后的第一个条件要有Where而且还用不到and 第二个才用and的。
    好好整理你的代码。
      

  3.   

    谢谢你的提醒,不过我把第一个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()); 
        } 
    上面之前写错了一个,把系别编号写成学院编号了。不好意思啊
      

  4.   


    谢谢你的提醒,不过我把第一个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()); 
        }