c# - 如何使用参数从 Access 数据库中保存数字?

标签 c# asp.net database parameters sql-update

我想更新一个球员的进球数,所以如果他进球了,我想更新他的进球数。我需要它从数据库中获取玩家的进球数,然后将其与从网站上选择的新号码相加。有谁能帮帮我吗?

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 = "";
    }

关于c# - 如何使用参数从 Access 数据库中保存数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189399/

相关文章:

c# - 从 C# 调用 C++ DLib 导致错误分配异常

c# - 使用 UI 自动化获取 ComboBox 中的项目时出现奇怪的结果

asp.net - 如何在不使用 global.asax 的情况下添加 Application_End 处理程序?

mysql - 加密数据库凭据

C# 和 MySql 集成

c# - 如何将第一项设置为选中

c# - 收集 Azure 中的 Service Fabric 群集日志

asp.net - Elasticsearch 结合聚合

mysql - 基于角色的访问控制 MySql 实现

mysql - 在 MySQL 中,如何对单个选择使用两次表引用?