【问题标题】:Sql to update tableSql更新表
【发布时间】:2012-10-18 15:26:34
【问题描述】:

我正在使用以下代码更新用户信息,但出现错误。谁能指出我出了什么问题。我正在为 Web 服务编写此代码。

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]=@fName, [lName]=@lName, [password]=@password, [emailAddress]=@emailAddress" + "WHERE [ID]=@uID";
                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]=@uID'.
       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>

【问题讨论】:

  • 我不太确定为什么需要对这个问题投反对票,很容易忽略这样简单的事情,我保证投反对票的每个人都做过。但是,您可能希望接受其中一个答案。

标签: asp.net sql visual-studio-2010


【解决方案1】:

WHERE前需要加空格

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

或者你不串联我看不出有什么区别,为什么不直接做呢

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

【讨论】:

    【解决方案2】:

    这个错误是不言自明的:

    '@emailAddressWHERE [ID]=@uID'
    

    @emailAddressWHERE 之间没有空格

    【讨论】:

    • 谢谢,这是个愚蠢的错误,我注意到错误输出但没有注意到空格..
    【解决方案3】:

    WHERE 前需要一个空格

    @emailAddress" + " WHERE 
    

    【讨论】:

      【解决方案4】:

      您需要在 where 开始之前添加空格。

      您可以像下面提到的那样编写查询。

      string sql = "UPDATE [User] SET [fName]=@fName, [lName]=@lName, 
          [password]=@password, [emailAddress]=@emailAddress" +" "+ "WHERE [ID]=@uID";
      

      【讨论】:

        猜你喜欢
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-28
        • 2015-10-01
        • 2018-04-18
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多