I'm using Asp.Net MVC and one of the functions of my program is to register and Login. I always get this error when I try to register.
System.Data.SqlClient.SqlException: Column name or number of supplied values does not match table definition.
Model:
public class Users
{
[Key]
public int ID { get; set; }
[Display(Name = "User Type")]
[Required]
public int TypeID { get; set; }
public List<UserType> Types { get; set; }
public string UserType { get; set; }
[Display(Name = "Email Address")]
[MaxLength(80)]
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Display(Name = "Password")]
[MaxLength(50)]
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name = "First Name")]
[MaxLength(80)]
[Required]
public string FN { get; set; }
[Display(Name = "Last Name")]
[MaxLength(80)]
[Required]
public string LN { get; set; }
[Display(Name = "Phone")]
[MaxLength(12)]
[MinLength(12)]
[Required]
public string Phone { get; set; }
[Display(Name = "Status")]
public string CurrentStatus { get; set; }
[Display(Name = "Status")]
public List<SelectListItem> Status { get; set; }
}
Controller:
[HttpPost]
public ActionResult Add(Users record)
{
if (IsExisting(record.Email))
{
ViewBag.Message = "<div class='alert alert-danger'>Email address already existing.</div>";
record.Types = GetUserTypes();
return View(record);
}
else
{
using (SqlConnection con = new SqlConnection(Helper.GetConnection()))
{
con.Open();
string query = @"INSERT INTO users VALUES
(@typeID, @userEmail, @userPassword, @userFirstName,
@userLastName, @userPhone, @userStatus)";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@typeID", record.TypeID);
cmd.Parameters.AddWithValue("@userEmail", record.Email);
cmd.Parameters.AddWithValue("@userPW", Helper.Hash(record.Password));
cmd.Parameters.AddWithValue("@userFN", record.FN);
cmd.Parameters.AddWithValue("@userLN", record.LN);
cmd.Parameters.AddWithValue("@userPhone", record.Phone);
cmd.Parameters.AddWithValue("@userStatus", "Active");
cmd.ExecuteNonQuery();
ViewBag.Message = "<div class='alert alert-success'>Record added.</div>"; // displays alert message when record is successfully added
ModelState.Clear(); // removes existing user input
record.Types = GetUserTypes();
return View(record);
}
}
}
}