The query looks okay.
The issue can be with your "id"
Execute the query manually on your database and see if it updates. If the id is wrong then the query returns success without updating anything.
Suggestion - Usage of queries like this are prone to very big security loopholes like SQL injection. Consider using ORMs like EntityFramework or pass query parameters as ADO parameters rather that stitching directly in query
Optionally
If you didn't prefer to use big ORMs like EntityFrameworks, I've created a simple dapper based library that you can consider to run your queries in 1 or 2 lines safely.
How to use : https://github.com/sangeethnandakumar/Express-Data-Library
Installation
Install-Package Twileloop.ExpressData -Version 1.0.0
Running a parameterized query safely to prevent SQL Injection
var sql2 = $ "SELECT * FROM tblUser WHERE Id=@id AND Fname=@fname";
result = SqlHelper.QuerySafe<TblUser>(sql2,
new
{
id = 1,
fname = "Sangeeth"
},
_connectionString);