2017-05-29 27 views
-1

試圖在我的代碼更新用戶信息時,遇到了這個錯誤...試圖發現語法錯誤

ErrorSystem.Data.OleDb.OleDbException(0x80040E14):語法錯誤在 UPDATE語句。在在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小時)在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(對象&(tagDBPARAMS dbParams,對象&的ExecuteReuslt) 的ExecuteReuslt)在 System.Data.OleDb.OleDbCommand.ExecuteCommand(的CommandBehavior 行爲,在 System.Data.OleDb對象在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(的CommandBehavior 行爲,字符串方法)&的ExecuteReuslt)。 OleDbCommand.ExecuteNonQuery() clsDataLayer.UpdateUser(String userName,String favProgram,String City,String leastFav,String State,DateTime Date,Int32 userID1)in c:\ Users \ John Vinson \ Documents \ Visual Studio 2015 \ WebSites \ ProgramAnonymous \ App_Code \ clsDataLayer.cs:線56在 useraccount_details.updateinfo_Click(對象發件人,EventArgs e)如 C:\用戶\約翰文森\文件\的Visual Studio 2015 \網站已\ ProgramAnonymous \ useraccount_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(); 

    } 
+2

您在'WHERE'之前有一個逗號。我投票結束這些只是拼寫錯誤。 –

回答

1

爲了避免這種討厭的語法錯誤,不構建(串連)從大塊的查詢,使用逐字串把查詢作爲可讀字符串:

string sqlStmt = 
     @"UPDATE users 
      SET userName = @username1, 
       favProgram = @favprogram1, 
       city = @city1, 
       leastFavProgram = @leastfavprogram, 
       dateComplete = @datecomplete -- <- no comma ',' should be here 
     WHERE (users.userID = @id)"; 

這裏有一個簡單的開發過程:打開SQL編輯器,編寫正確的查詢然後把它(複製+粘貼)到@""