ASP.Net网站中的更新声明问题

时间:2019-06-05 15:25:59

标签: c# sql asp.net

我正在尝试为作业创建更新声明,以便用户可以更改其帐户信息。每当尝试执行此操作时,都会收到一条错误消息,指出“更新语句中的语法错误”。我正在修改代码以从另一个工作中生成此语句的地方开始工作,因此该代码确实可以工作,因此我确定我必须缺少一些小细节。下面是单击按钮的代码,这些按钮会启动创建update语句的方法以及该方法本身。

按钮单击:

protected void btnConfirm_Click(object sender, EventArgs e)
    {

        bool userUpdateError = false;


        string tempPath = Server.MapPath("~/App_Data/Programmaholics.mdb");
        clsDataLayer myDataLayer = new clsDataLayer(tempPath);


        try
        {
            myDataLayer.UpdateUser(lblUsername.Text, lblCity.Text, lblState.Text, lblFavorite.Text, lblLeastFavorite.Text, lblDate.Text, Convert.ToInt32(UserID.Text));
        }
        catch (Exception error)
        {
            userUpdateError = true;
            string message = "Error updating user, please check form data. ";
            Master.UserFeedBack.Text = message + error.Message;
        }

        if (!userUpdateError)
        {
            Master.UserFeedBack.Text = "Customer Updated Successfully.";
        }
    }

更新方法:

 public void UpdateUser(string userName, string city, string state, string favorite, string leastFavorite, string date, int userID)
    {

        dbConnection.Open();


        string sqlStmt = "UPDATE tblUser SET Username = @user, " +
          "City = @city, " +
          "State = @state, " +
          "Favorite = @favorite, " +
          "LeastFavorite @least, " +
          "DateLast = @date " +
          "WHERE (tblUser.UserID = @id)";

        OleDbCommand dbCommand = new OleDbCommand(sqlStmt, dbConnection);


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

        dbCommand.Parameters.Add(new OleDbParameter("@city", city));
        dbCommand.Parameters.Add(new OleDbParameter("@state", state));
        dbCommand.Parameters.Add(new OleDbParameter("@favorite", favorite));
        dbCommand.Parameters.Add(new OleDbParameter("@least", leastFavorite));
        dbCommand.Parameters.Add(new OleDbParameter("@date", date));
        dbCommand.Parameters.Add(new OleDbParameter("@id", userID));


        dbCommand.ExecuteNonQuery();


        dbConnection.Close();
    }

2 个答案:

答案 0 :(得分:1)

将“ WHERE(tblUser.UserID = @id)”更改为“ WHERE UserID = @id”,因为您尝试更新同一张表,所以没有必要。

string sqlStmt = "UPDATE tblUser SET Username = @user, " +
          "City = @city, " +
          "State = @state, " +
          "Favorite = @favorite, " +
          "LeastFavorite @least, " +
          "DateLast = @date " +
          "WHERE UserID = @id";

答案 1 :(得分:0)

答案在Arulkumar's comment中:

="LeastFavorite @least, " +,中丢失,应该为"LeastFavorite = @least, " +