string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" + 
this.FCKeditor1.Value + "',HF_IP='" + Request.UserHostAddress.ToString() + "',HF_Time='" + DateTime.Now.ToString() + "' where MessageID=" + Request["id"];进行数据库更新时,提示“=”附近有语法错误。这条语句到底哪里错了呢?

解决方案 »

  1.   

    MessageID=" + Request["id"]估计是这里,因为这里有可能是null或者不是数字类型,即使是数字类型你也还是用Convert.ToInt32(Request["id"])更好,你断点试试
      

  2.   

    将StrSql提到查询分析器中执行,一眼就看出来了
    估计this.FCKeditor1.Value中值有问题,可能有'符号
      

  3.   

    使用参数化的语法,安全性和错误都很少出现string StrSql = "update tb_Message set UserName=@UserName,HF_Content=@HF_Content,HF_IP=@HF_IP,HF_Time=@HF_Time where MessageID=@MessageID";cmd.Parameters.AddWithValue("@UserName",Session["UserName"].ToString());其他做法类似
      

  4.   

    我就是断点断到这一句,然后进行dbObj.ExecNonQuery(StrSql);时出错。
    if (Request["MessageID"].ToString() != "")
                {
                    string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" + this.FCKeditor1.Value + "',HF_IP='" + Request.UserHostAddress.ToString() + "',HF_Time='" + DateTime.Now.ToString() + "' where MessageID='" + Convert.ToInt32(Request["id"]).ToString()+"'";
                    
                    dbObj.ExecNonQuery(StrSql);
                    Response.Write("<script>alert('回复成功!')</script>");
                    Response.Redirect("MessageBoard.aspx");
                }
                else
                {
                    Response.Redirect("MessageBoard.aspx");
                }
      

  5.   

    这是sql语句错误,你
    Response.Write(StrSql )
    看是什么啊
      

  6.   

    MessageID字段是数字类型,不要加引号
      

  7.   

    我那个SQL语句好像是个空值,我是这样传递的<asp:LinkButton 
                                            ID="lnkbtnReply" runat="server" 
                                            
                                            PostBackUrl='MessageReply.aspx?MessageID=<%#DataBinder.Eval(Container.DataItem,"MessageID") %>'>回复</asp:LinkButton>
      

  8.   

    我设置断点运行到这儿时,提示取出的是空值。这样传递过来的值。<asp:LinkButton 
                                            ID="lnkbtnReply" runat="server" 
                                            
                                            PostBackUrl='MessageReply.aspx?MessageID=<%#DataBinder.Eval(Container.DataItem,"MessageID") %>'>回复</asp:LinkButton>
      

  9.   

    估计是this.FCKeditor1.Value里面的内容含有引号,导致构造的SQL语句出现错误
    你可以用一个简单的字符串如:1234567890来测试一下。
    建议使用调用存储过程的方式来执行SQL语句,即Parameters.Add的方式
      

  10.   

    string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "',HF_Content='" +  
    this.FCKeditor1.Value + "',HF_IP='" + Request.UserHostAddress.ToString() + "',HF_Time='" + DateTime.Now.ToString() + "' where MessageID=" + Request["id"];在后面加上Response.Write(strSQL);
    Response.End();
      

  11.   

         string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "' where MessageID='"+Request["id"]+"'";
    上面这个运行下看下,看报什么错,如果是类型问题  就换下
    string StrSql = "update tb_Message set UserName='" + Session["UserName"].ToString() + "' where MessageID='"+Convert .ToInt32 ( Request["id"].ToString ())+"'";
      

  12.   

    我昨晚改了,是因为传Request["id"]值过来时被重新编码了。改成这样就可以了int.Parse(Page.Request["MessageID"].ToString().Trim()