In my app I have an update action to update the customers records in the back-end.
Further, as I know it's supposed to save any updates or non (null) when one field wasn't changed.
However, when I try to click save I'm getting a sql error, that the "MobileNumber" was not supplied.
Here is my data tier class:
- #region Update rider's info
- public bool updateRiders(RidersModel rider)
- {
-
-
- query = "UPDATE Users SET firstName = @firstName," +
- " lastName = @lastName, email = @email, Address = @Address," +
- " MobileNumber = @MobileNumber, city = @city," +
- "state = @state, zipCode = @zipCode, UserName =@UserName, users_Id = @users_Id " +
- "WHERE usersId = @ID;";
-
- conn = new SqlConnection(connectionString);
- cmd = new SqlCommand(query, conn);
-
- cmd.Parameters.Add("@ID", SqlDbType.Int).Value = rider.usersId;
- cmd.Parameters.Add("@firstName", SqlDbType.VarChar, 255).Value = rider.firstName;
- cmd.Parameters.Add("@lastName", SqlDbType.VarChar, 255).Value = rider.lastName;
- cmd.Parameters.Add("@email", SqlDbType.VarChar, 255).Value = rider.email;
- cmd.Parameters.Add("@Address", SqlDbType.VarChar, 255).Value = rider.Address;
- cmd.Parameters.Add("@city", SqlDbType.VarChar, 255).Value = rider.city;
- cmd.Parameters.Add("@state", SqlDbType.VarChar, 255).Value = rider.state;
- cmd.Parameters.Add("@zipCode", SqlDbType.Int).Value = rider.zipCode;
- cmd.Parameters.Add("@MobileNumber", SqlDbType.VarChar, 200).Value = rider.mobileNumber;
- cmd.Parameters.Add("@UserName", SqlDbType.NVarChar, 256).Value = rider.UserName;
- cmd.Parameters.Add("@users_Id", SqlDbType.NVarChar, 128).Value = rider.userID;
-
-
- try
- {
- conn.Open();
- rows = cmd.ExecuteNonQuery();
- if (rows > 0)
- {
- success = true;
- }
-
- }
- catch (SqlException ex)
- {
-
- throw new Exception(ex.Message);
-
- }
- finally
- {
- conn.Close();
- }
-
- return success;
-
- }
my Action is as the following :
- [HttpGet]
- public async Task<ActionResult> EditRiders(int id)
- {
- var userStore = new UserStore<IdentityUser>();
- var userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new RidesDbContext()));
-
- IdentityUser theUser = new IdentityUser();
- theUser = await userManager.FindByIdAsync(User.Identity.GetUserId());
-
- RidersModel rider = new RidersModel();
- RidersTier tier = new RidersTier();
- rider.email = theUser.UserName;
- rider.email = theUser.Email;
- rider.mobileNumber = theUser.PhoneNumber;
- rider.Password = theUser.PasswordHash;
- rider.userID = theUser.Id;
-
-
-
- rider = tier.getRidersById(id);
-
-
-
- return View(rider);
- }
-
-
- [HttpPost]
- public async Task<ActionResult> EditRiders(RidersModel rider)
- {
-
- var userStore = new UserStore<IdentityUser>();
- var userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new RidesDbContext()));
-
- IdentityUser theUser = new IdentityUser();
-
-
-
- if (ModelState.IsValid)
- {
- theUser = await userManager.FindByIdAsync(User.Identity.GetUserId());
-
- rider.email = theUser.UserName;
- rider.email = theUser.Email;
- rider.mobileNumber = theUser.PhoneNumber;
- rider.Password = theUser.PasswordHash;
- rider.userID = theUser.Id;
-
- RidersTier tier = new RidersTier();
- tier.updateRiders(rider);
- }
-
-
-
- TempData["ad"] = "User info has been updated";
-
- return View(rider);
- }
Is there any reason for that?
I tried to provide the parameter variables in the order that they appear in the query statement, but that didn't help.
I would appreciate your help. Thank you.