string str="update members set member_password=@member_password,security_level_id=@security_level_id,memo=@memo where member_id="+Utility.GetParam("id");
OleDbCommand myCmd = new OleDbCommand(str,Utility.Connection);
myCmd.Parameters.Add(new OleDbParameter("@member_password",OleDbType.Char,32));
myCmd.Parameters["@member_password"].Value=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(member_password.Text.Trim(),"MD5");
myCmd.Parameters.Add(new OleDbParameter("@memo",OleDbType.VarWChar));
myCmd.Parameters["@memo"].Value=DDL1.SelectedValue.ToString().Trim();
myCmd.Parameters.Add(new OleDbParameter("@security_level_id",OleDbType.UnsignedTinyInt));
myCmd.Parameters["@security_level_id"].Value=DDL1.SelectedIndex;
--------------------------------------------------------------------------------
提示错误:
-----------------------------------------------------------------------------
异常详细信息: System.Data.OleDb.OleDbException: UPDATE 语句的语法错误。
OleDbException (0x80040e14): UPDATE 语句的语法错误。]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
   ArticleBBS.Edit_Member.up_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\articlebbs\edit_member.aspx.cs:130
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1277
----------------------------------------------------------------------------------------
我用的是ACCESS,没怎么用过,请问SQL语句错哪了?我在字段名上加上[]也还是不行!

解决方案 »

  1.   

    把你上面的语句变成这样
    update members set member_password='jj',security_level_id='jhh',memo='jj' where member_id="ll"是没有错的
      

  2.   

    注意字符型的,在sql里需要用单引号括起来哦
      

  3.   

    可我不是在SQL里面哦!呵呵~~我刚好是把单引好去掉的,不好意思哈!
      

  4.   

    string str="update members set member_password=@member_password,security_level_id=@security_level_id,memo=@memo where member_id="+Utility.GetParam("id");改成下面:试试.最后不一样string str="update members set member_password=@member_password,security_level_id=@security_level_id,memo=@memo where member_id='"+Utility.GetParam("id")+"'";
      

  5.   

    如果数据库字段是字符型的话,是需要用在构造sql语句里面加上单引号将变量值给括起来
      

  6.   

    你最好先说出你的表结构是什么样的,既然用参数,那么member_id也用参数赋值
      

  7.   

    还有你的password进行加密后,是否超长了。
      

  8.   

    加上‘’后是出错的,那个在SQL数据库中可以使用,在ACCESS中就出错了。
      

  9.   

    改成这样:
    string str="update members set [member_password]='"+System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(member_password.Text.Trim(),"MD5")+"',[answe]r='"+answer.Text.Trim()+"',[security_level_id]='"+DDL1.SelectedIndex+"',[memo]='"+DDL1.SelectedValue.ToString().Trim()+"' where  member_id='"+Utility.GetParam("id")+"'";
    和这样
    string str="update members set [member_password]="+System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(member_password.Text.Trim(),"MD5")+",[answe]r="+answer.Text.Trim()+",[security_level_id]="+DDL1.SelectedIndex+",[memo]="+DDL1.SelectedValue.ToString().Trim()+" where  member_id="+Utility.GetParam("id");
    都是错的!还是提示UPDATE语法错误!数据库设置是:
    member_id=自动编号
    member_password=文本
    answe=文本
    security_level_id=数字
    memo=文本
      

  10.   

    string str="update members set member_password=@member_password,security_level_id=@security_level_id,[memo]=@memo where member_id="+Utility.GetParam("id");
      

  11.   

    将其改成这样
    string str="update [members] set [member_password]='"+System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(member_password.Text.Trim(),"MD5")+"',[answer]='"+answer.Text.Trim()+"',[security_level_id]="+DDL1.SelectedIndex+",[memo]='"+DDL1.SelectedValue.ToString().Trim()+"' where  member_id="+Utility.GetParam("id");
      

  12.   

    Knight94(愚翁)
    string str="update members set member_password=@member_password,security_level_id=@security_level_id,[memo]=@memo where member_id="+Utility.GetParam("id");
    ----------------------------------------------这样早试过了!
      

  13.   

    jbeauty(我是骨灰级玩家) 
    ----------------------------可以了,谢谢!
      

  14.   


    已经解决啦!原来第一个是memo应该加[],然后呢长整型数据要用UnsignedInt而不能用UnsignedTinyInt
    谢谢各位啦!