C# 试图发现语法错误

C# 试图发现语法错误,c#,sql,C#,Sql,尝试更新“我的代码”中的用户信息时出现此错误 ErrorSystem.Data.OleDb.OLEDBEException(0x80040E14):中的语法错误 更新语句。在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS 数据库参

尝试更新“我的代码”中的用户信息时出现此错误

ErrorSystem.Data.OleDb.OLEDBEException(0x80040E14):中的语法错误 更新语句。在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS 数据库参数、对象和执行器结果)位于 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteCommand(命令行为 行为、对象和执行器结果) System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)在 位于的System.Data.OleDb.OleDbCommand.ExecuteOnQuery() UpdateUser(字符串用户名、字符串favProgram、字符串 城市,字符串leastFav,字符串状态,日期时间日期,Int32 userID1) c:\Users\John Vinson\Documents\Visual Studio 2015\WebSites\ProgramAnonymous\App\u Code\clsDataLayer.cs:第56行 用户帐户\u详细信息。更新信息\u在 c:\Users\John Vinson\Documents\Visual Studio 2015\WebSites\programmanonymous\useraccount\u details.aspx.cs:第57行

这是代码

public void UpdateUser(string userName, string favProgram, string City, string leastFav,
        string State, DateTime Date, int userID1)
    {
        dbConnection.Open();

        string sqlStmt = "UPDATE users SET userName = @username1, " +
            "favProgram = @favprogram1, " +
            "city = @city1, " +
            "state = @state1, " +
            "leastFavProgram = @leastfavprogram, " +
            "dateComplete = @datecomplete, " +
            "WHERE (users.userID = @id)";

        OleDbCommand dbCommand = new OleDbCommand(sqlStmt, dbConnection);

        OleDbParameter param = new OleDbParameter("@username1", userName);
        dbCommand.Parameters.Add(param);

        dbCommand.Parameters.Add(new OleDbParameter("@favprogram1", favProgram));
        dbCommand.Parameters.Add(new OleDbParameter("@city1", City));
        dbCommand.Parameters.Add(new OleDbParameter("@state1", State));
        dbCommand.Parameters.Add(new OleDbParameter("@leastfavprogram", leastFav));
        dbCommand.Parameters.Add(new OleDbParameter("@datecomplete", Date));
        dbCommand.Parameters.Add(new OleDbParameter("@id", userID1));

        dbCommand.ExecuteNonQuery();

        dbConnection.Close();

    }
为了避免这种讨厌的语法错误,不要从块构建(连接)查询,使用逐字字符串将查询作为单个可读字符串:

字符串sqlStmt=
@“更新用户
设置userName=@username1,
favProgram=@favprogram1,
城市=@city1,
leastFavProgram=@leastFavProgram,

dateComplete=@dateComplete--WHERE
前面有一个逗号。我认为这只是打字错误。
    string sqlStmt = 
      @"UPDATE users
           SET userName = @username1,
               favProgram = @favprogram1,
               city = @city1,
               leastFavProgram = @leastfavprogram,
               dateComplete = @datecomplete -- <- no comma ',' should be here
         WHERE (users.userID = @id)";