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