C# 为什么我的ExecuteNonQuery()在C中返回0#
我正在尝试使用新的TeamID更新玩家记录,但它没有更新,任何提示请返回受影响的行数。数据库中没有值为0的人员ID 看起来您可能希望在while循环中移动大部分代码,就像下面的大多数一样C# 为什么我的ExecuteNonQuery()在C中返回0#,c#,sqldatareader,executenonquery,C#,Sqldatareader,Executenonquery,我正在尝试使用新的TeamID更新玩家记录,但它没有更新,任何提示请返回受影响的行数。数据库中没有值为0的人员ID 看起来您可能希望在while循环中移动大部分代码,就像下面的大多数一样 SqlCommand Updatecmd = new SqlCommand("UPDATE Persons SET TeamID=@Team_ID WHERE PersonID=@Person_ID", UpdateCon); Updatecmd.Parameters.Add("@Team_ID", SqlDb
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;
ExecuteNonQuery
返回受影响的行数。数据库中没有值为0的人员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;
这两条线:
Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
Updatecmd.Parameters["@Person_ID"].Value = Player_ID;
最初将值设置为变量PlayerTeam\u ID
和Player\u ID
。在read
循环中,您正在更新变量PlayerTeam\u ID
和Player\u 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();
}
这两条线:
Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
Updatecmd.Parameters["@Person_ID"].Value = Player_ID;
最初将值设置为变量PlayerTeam\u ID
和Player\u ID
。在read
循环中,您正在更新变量PlayerTeam\u ID
和Player\u 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();
}
您确定PersonID存在吗?您从不更新update命令的参数。您在开始时设置了一次-更改变量
Player\u ID
不会更改参数中的值。您确定PersonID存在吗?您从不更新更新命令的参数。在开始时设置一次-更改变量Player\u ID
不会更改参数中的值。这是什么约束?您尝试更新的团队ID是否存在于团队中?您需要为我提供更多的信息,以便我能够帮助您完成这项任务。@Fruits-这可能是一个操作顺序问题<代码>+在%
和*
之前计算(就像普通数学一样)。您可能希望您的代码对PlayersCount进行模运算,加上4,然后乘以除法ID,但实际情况是将4加上4,然后PlayersCount是模8,乘以除法ID。如果希望从左向右,可以使用括号:(PlayersCount%4)+4*除法ID
。您期望的值是什么?约束是什么?您试图更新的团队id是否存在于团队中?您需要为我提供更多的信息,以便我能够帮助您完成这项任务。@Fruits-这可能是一个操作顺序问题<代码>+在%
和*
之前计算(就像普通数学一样)。您可能希望您的代码对PlayersCount进行模运算,加上4,然后乘以除法ID,但实际情况是将4加上4,然后PlayersCount是模8,乘以除法ID。如果希望从左向右,可以使用括号:(PlayersCount%4)+4*除法ID
。您期望的值是什么?