请教一下各位高手:这段更新数据库的代码编译没问题,但运行时.net提示错误“异常详细信息: system.Data.OleDb.OleDbException: UPDATE 语句的语法错误。
”。我觉得update操作没问题啊,而且我在access和sql server中都运行过这条更新语句,都能正确执行啊!updateStr=string.Format("update tableUser set password='{0}' where userName='{1}';",this.password,this.userName);
updateCommand=new System.Data.OleDb.OleDbCommand(updateStr,this.oleDbConnection1);

this.oleDbConnection1.Open();

updateCommand.ExecuteNonQuery();究竟什么问题呢?

解决方案 »

  1.   

    楼主的update语句的where中包含了access关键字,请将password和username用[]括起来,就正确了。
      

  2.   

    楼上的兄弟说的似乎有点道理,但我开始登录进行身份验证时,用的也是userName和password,没有出现异常,select没有出现异常,就直接验证成功了啊。我就想不通了,对这张表,select和delete都能进行操作,但update却不行,真是奇怪啊!
      

  3.   

    userName='{1}';后面的分号去掉试试
      

  4.   

    建议你用 try catch语句捕捉一下错误,看一下错误提示 然后修改
      

  5.   

    主要是password的问题,改成[password]
      

  6.   

    哈哈,把password改成[password]后就成功了,谢谢月月鸟和风之刀!!!——可惜我是新来的,没有分,无以为报,真是惭愧啊~除了真心诚意的感谢外倒身无长物了,汗~~
      

  7.   

    不过我还是想不通:在delete时我只用到了userName,这倒没什么好说的。但在最开始登录进行身份验证时,我用的select语句就用到了password,可是系统没提示我有错误诶?:sqlQuery=String.Format("select password from tableUser where 
    userName='{0}'",this.userName);
    this.oleDbConnection1.Open();myCommand=new System.Data.OleDb.OleDbCommand(sqlQuery,oleDbConnection1);
    myReader=myCommand.ExecuteReader();

    if(myReader.Read())        //找到该用户名所对应的记录
    {               

        if(this.password==this.myReader.GetString(0)) {   //输入密码与数据库表中密码一致

          this.myReader.Close();
          this.oleDbConnection1.Close();      Response.Redirect("SetValue.aspx?userName_login="+this.userName);  //跳转    }    else this.Label3.Text="wrong password";    //密码错误
    }

    else           //没有在表中找到输入的用户名,非法用户名
    {
        this.Label3.Text="Invalid username";
        clearTextBox();
        this.myReader.Close();
        this.oleDbConnection1.Close();
    }

      

  8.   

    上面的select语句是可以正确运行的, 输入正确的用户名和密码,就可以登录了。