0

我正在尝试使用新的 TeamID 更新玩家记录,但它没有更新,请提供任何提示

4

2 回答 2

3

ExecuteNonQuery返回受影响的行数。您的数据库中没有值为 0 的 Person_ID。

看起来您可能想在 while 循环中移动大部分代码,就像大多数这样

SqlCommand Updatecmd = new SqlCommand("UPDATE Persons SET TeamID=@Team_ID WHERE PersonID=@Person_ID", UpdateCon);
Updatecmd.Parameters.Add("@Team_ID", SqlDbType.VarChar);
Updatecmd.Parameters.Add("@Person_ID", SqlDbType.VarChar);
Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
Updatecmd.Parameters["@Person_ID"].Value = Player_ID;

应该放在这之后

 PlayersCount++;
 Division_ID=reader.GetInt32(1);
 Player_ID = reader.GetInt32(0); 
 PlayerTeam_ID = PlayersCount % 4 + 4 * Division_ID;
于 2014-02-11T01:19:53.800 回答
2

这两行:

Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
Updatecmd.Parameters["@Person_ID"].Value = Player_ID;

最初将值设置为变量PlayerTeam_IDPlayer_ID。在您的read循环中,您正在更新变量PlayerTeam_IDPlayer_ID,但您没有更新参数中的值。您应该更新参数的值,如下所示:

while (reader.Read())
{
    PlayersCount++;
    Division_ID=reader.GetInt32(1);
    Player_ID = reader.GetInt32(0); 
    PlayerTeam_ID = PlayersCount % 4 + 4 * Division_ID;

    Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
    Updatecmd.Parameters["@Person_ID"].Value = Player_ID;

    UpdateCon.Open();
    int intQuery = Updatecmd.ExecuteNonQuery();

    ltlOutput.Text = intQuery.ToString();

    UpdateCon.Close();
}
于 2014-02-11T01:23:22.427 回答