Попробуйте параметризовать ваш запрос (чтобы избежать атак с использованием SQL-инъекций), а затем выполните его в течение try-catch
, чтобы увидеть, вызывает ли он исключение. EG:
SqlConnection conn = new SqlConnection(myConnectionString);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "UPDATE Users SET username = @Username, password = @Password WHERE username = @OldUsername";
cmd.Parameters.Add(new SqlParameter("@Username", txtNewUsername.Text));
cmd.Parameters.Add(new SqlParameter("@Password", txtPassword.Text));
cmd.Parameters.Add(new SqlParameter("@OldUsername", txtOldUsername.Text));
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.Writeline(String.Format("{0} thrown: {1}", ex.GetType().Name, ex.Message));
}
Также обратите внимание, что вы используете одно и то же поле имени пользователя как для предложения SET
, так и для предложения WHERE
, что приведет к ошибке, если пользователь введет другое имя пользователя, которого еще нет в базе данных (не говоря уже о , вам, вероятно, следует убедиться, что изменяемое имя пользователя принадлежит им, а не кому-либо другому).