Я пытаюсь обновить плеер записи с новым TeamID, но это не обновление, любые намеки, пожалуйста,Почему мой ExecuteNonQuery() возвращает 0 в C#
ответ
ExecuteNonQuery
возвращает количество затронутых строк. В вашей базе данных нет идентификатора Person_ID со значением 0.
Похоже, что вы можете захотеть, чтобы переместить большую часть вашего кода внутри цикла в то время, как большая часть этого
SqlCommand Updatecmd = new SqlCommand("UPDATE Persons SET [email protected]_ID WHERE [email protected]_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;
Что это за ограничение? – Ghost
Имеет ли идентификатор команды, который вы пытаетесь обновить, чтобы существовать в командах? Вам нужно предоставить кучу больше информации, чтобы я мог помочь с этим. – Ghost
@Fruits - Возможно, это будет порядок работы. '+' оценивается до '%' и '*' (как и обычная математика). Вы можете ожидать, что ваш код будет выполнять модуль на PlayersCount, добавьте 4, а затем умножьте на Division_ID, но на самом деле происходит 4, добавлено к 4, а затем PlayersCount - модуль 8, умноженный на DivisionID. Если вы ожидали, что прямо слева направо, вы можете использовать круглые скобки: '(PlayersCount% 4) + 4 * Division_ID'. Каковы ценности, которые вы ожидаете? – Tim
Эти две строки:
Updatecmd.Parameters["@Team_ID"].Value = PlayerTeam_ID;
Updatecmd.Parameters["@Person_ID"].Value = Player_ID;
Задайте значение изначально переменным PlayerTeam_ID
и Player_ID
. В вашем цикле read
вы обновляете переменные PlayerTeam_ID
и Player_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_ID' не изменяет значение в параметре. – Tim