簡體   English   中英

如何使用參數從 Access 數據庫中保存數字?

[英]How to Save a number from Access database using Parameter?

我想更新一個球員的進球數,所以如果他進球了,我想更新他的進球數。 我需要它從數據庫中獲取玩家的進球數,然后將其與從網站上選擇的新數字相加。 任何人都可以幫助我嗎?

protected void SoccerTable_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();
        string query2 = "SELECT Achievement FROM SoccerAchievements WHERE PlayerCode = @id";
        OleDbCommand cmd = new OleDbCommand(query2, sqlCon);
        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(SoccerTable.DataKeys[e.RowIndex].Value.ToString()));
        var reader = cmd.ExecuteReader();
        reader.Read();
        string SavedAchievementFromDB = reader["Achievement"].ToString();
        int b = int.Parse(SavedAchievementFromDB); // Trying to Save The num of Goals from DataBase to int
        int GoalsAfterSum = b + int.Parse(((SoccerTable.Rows[e.RowIndex].FindControl("AchNums") as DropDownList).Text.Trim())); // Trying to sum
        string query = "UPDATE SoccerAchievements SET Achievement='" + GoalsAfterSum + "' WHERE PlayerCode = @id"; // Trying to Update
        OleDbCommand sqlCmd = new OleDbCommand(query, sqlCon);
        sqlCmd.Parameters.AddWithValue("@Goals", (SoccerTable.Rows[e.RowIndex].FindControl("AchNums") as DropDownList).Text.Trim());
        sqlCmd.Parameters.AddWithValue("@id", Convert.ToInt32(SoccerTable.DataKeys[e.RowIndex].Value.ToString()));
        sqlCmd.ExecuteNonQuery();
    }
}

您不需要在更新之前從數據庫中獲取值,您只需更新 SQL 語句UPDATE SoccerAchievements SET Achievement = Achievement + @Goals

    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();

        // get the goals from the web control
        string goalsText = (SoccerTable.Rows[e.RowIndex].FindControl("AchNums") as DropDownList).Text.Trim();

        // try to parse goals to int
        if (!int.TryParse(goalsText, out int goals))
        {
            // handle error
        }

        // try to parse user id to int
        if (!int.TryParse(SoccerTable.DataKeys[e.RowIndex].Value.ToString(), out int id))
        {
            // handle error
        }

        // increment the value in sql statement
        string query = "UPDATE SoccerAchievements SET Achievement = Achievement + @Goals WHERE UserID = @id";

        OleDbCommand sqlCmd = new OleDbCommand(query, sqlCon);
        sqlCmd.Parameters.AddWithValue("@Goals", goals);
        sqlCmd.Parameters.AddWithValue("@id", id));

        sqlCmd.ExecuteNonQuery();

        lblSuccessMessage.Text = "עריכת הנתונים התבצעה בהצלחה";
        lblErrorMessage.Text = "";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM