2012-10-18 60 views
0

我正在使用下面的代码来更新用户信息,但我得到错误。任何人都可以指出我出了什么问题。我正在编写用于Web服务的代码。Sql更新表

public string UpdateUser(int uID, string fName, 
      string lName, string password, string emailAddress) 
     { 
      // Create connection object 
      int ix = 0; 
      string rTurn = ""; 
      OleDbConnection oleConn = new OleDbConnection(connString); 
      try 
      { 
       oleConn.Open(); 
       string sql = "UPDATE [User] SET [fName][email protected], [lName][email protected], [password][email protected], [emailAddress][email protected]" + "WHERE [ID][email protected]"; 
       OleDbCommand oleComm = new OleDbCommand(sql, oleConn); 

       oleComm.Parameters.Add("@fName", OleDbType.Char).Value = fName; 
       oleComm.Parameters.Add("@lName", OleDbType.Char).Value = lName; 
       oleComm.Parameters.Add("@password", OleDbType.Char).Value = password; 
       oleComm.Parameters.Add("@emailAddress", OleDbType.Char).Value = emailAddress; 
       oleComm.Parameters.Add("@uID", OleDbType.Integer).Value = uID; 

       ix = oleComm.ExecuteNonQuery(); 
       if (ix > 0) 
        rTurn = "User Updated"; 
       else 
        rTurn = "Update Failed"; 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.ToString()); 
       rTurn = ex.ToString(); 
      } 
      finally 
      { 
       oleConn.Close(); 
      } 
      return rTurn; 
     } 

错误 * 我收到以下错误,当我尝试更新的用户。 *

<string> 
System.Data.OleDb.OleDbException: Syntax error (missing operator) in query expression '@emailAddressWHERE [ID][email protected]'. 
     at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 
     at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 
     at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 
     at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) 
     at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 
     at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 
     at UserManagement.UserRegistration.UpdateUser(Int32 uID, String fName, String lName, String password, String emailAddress) in C:\Users\smartamrit\Desktop\SystemSoftware\UserManagement\UserRegistration.asmx.cs:line 97 
</string> 
+0

我不确定为什么需要降低这个问题,很容易忽略这样简单的事情,并且我保证每个人都会低调地做到这一点。但是,您可能想要接受其中一个答案。 –

回答

4
前的空间

您需要额外添加前WHERE

string sql = @"UPDATE [User] 
       SET [fName][email protected], 
        [lName][email protected], [password][email protected], 
        [emailAddress][email protected]" + " WHERE [ID][email protected]"; 
               ^here 

或者我看不出有任何区别,如果你没有串连它的空间,为什么不这样做直接

string sql = @"UPDATE [User] 
       SET [fName][email protected], 
        [lName][email protected], 
        [password][email protected], 
        [emailAddress][email protected] 
       WHERE [ID][email protected]"; 
2

的错误是不言自明:

'@emailAddressWHERE [ID][email protected]' 

你有@emailAddressWHERE

+0

谢谢你,它的愚蠢的错误,我注意到错误输出,但没有注意到的空间.. –

2

之间没有空格,您需要WHERE这里

@emailAddress" + " WHERE