Without your data, it's impossible to tell.
But ... you have your data, and you have a debugger. Combine teh two and your should be able to tell.
So do two things.
1) Change this line:
cmd.ExecuteNonQuery();
To this:
int changed = cmd.ExecuteNonQuery();
and put a breakpoint on it.
When you run your app, use the breakpoint to look at the value you are passing to SQL as the
@id
parameter. Then single step the line, and check the value of
changed
- if it's zero, then no rows were changed.
Normally, when an UPDATE "doesn't do anything" without any exception, it's because the WHERE clause matched no rows - so once you've used the debugger to check exactly what you are passing (rather than what you think you are passing) you can examine the DB to find out why it isn't matching.
Sorry, but we can't do any of that for you - we have no access to your data at all!