[英]Update database using ASP.NET MVC
I have a table in my database as the following:我的数据库中有一个表,如下所示:
Create table Employee
(
Id int Primary Key Identity(1,1),
Name nvarchar(50),
Gender nvarchar(10),
City nvarchar(50),
Salary decimal(18,2),
DateOfBirth DateTime
)
GO
-- Insert some test data into Employee table
Insert into Employee values('Pranaya','Male','Mumbai',4000,'02/03/1977')
Insert into Employee values('Anurag','Male','Hyderabad',5000,'04/06/1979')
Insert into Employee values('Priyanka','Female','Bangalore',1000,'01/05/1979')
Insert into Employee values('Subrat','Male','Hyderabad',2000,'03/07/1981')
Insert into Employee values('Sudhanshu','Male','Mumbai',3000,'02/04/1978')
Insert into Employee values('Preety','Female','Bangalore',4000,'02/03/1974')
Insert into Employee values('Sandeep','Male','Hyderabad',5000,'04/06/1972')
Insert into Employee values('Sambit','Male','Bangalore',6000,'07/05/1975')
Insert into Employee values('Hina','Female','Mumbai',3000,'09/08/1976')
GO
then I create a store procedure to update employee然后我创建一个存储过程来更新员工
Create procedure spUpdateEmployee
@Id int,
@Name nvarchar(50),
@Gender nvarchar (10),
@City nvarchar (50),
@Salary decimal(18,2),
@DateOfBirth DateTime
as
Begin
Update Employee Set
Name = @Name,
Gender = @Gender,
City = @City,
Salary = @Salary,
DateOfBirth = @DateOfBirth
Where Id = @Id
End
I create model employee我创建 model 员工
public class employee
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public decimal Salary { get; set; }
public DateTime DateOfBirth { get; set; }
}
I create class EmployeeBusinessLayer contain method updateEmployee我创建 class EmployeeBusinessLayer 包含方法 updateEmployee
public class EmployeeBusinessLayer
{
public void UpdateEmployee(employee e)
{
string connectionStrings = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
using (SqlConnection con =new SqlConnection(connectionStrings))
{
SqlCommand cmd = new SqlCommand("spUpdateEmployee", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paId = new SqlParameter();
paId.ParameterName = "@Id";
paId.Value = e.ID;
cmd.Parameters.Add(paId);
SqlParameter paName= new SqlParameter();
paId.ParameterName = "@Name";
paId.Value = e.Name;
cmd.Parameters.Add(paName);
SqlParameter paGender = new SqlParameter();
paId.ParameterName = "@Gender";
paId.Value = e.Gender;
cmd.Parameters.Add(paGender);
SqlParameter paCity = new SqlParameter();
paId.ParameterName = "@City";
paId.Value = e.City;
cmd.Parameters.Add(paCity);
SqlParameter paSalary = new SqlParameter();
paId.ParameterName = "@Salary";
paId.Value = e.Salary;
cmd.Parameters.Add(paSalary);
SqlParameter paDate = new SqlParameter();
paId.ParameterName = "@DateOfBirth";
paId.Value = e.DateOfBirth;
cmd.Parameters.Add(paDate);
con.Open();
cmd.ExecuteNonQuery();
}
}
}
I am sure the above are true.我确信以上是真的。 When I create Edit action in EmployeeController
当我在 EmployeeController 中创建编辑操作时
[HttpGet]
public ActionResult Edit(int id)
{
EmployeeBusinessLayer ebl = new EmployeeBusinessLayer();
employee e = ebl.GetAllEmployess().FirstOrDefault(emp => emp.ID == id);
return View(e);
}
[HttpPost]
public ActionResult Edit(employee employee)
{
if (ModelState.IsValid)
{
EmployeeBusinessLayer employeeBusinessLayer = new EmployeeBusinessLayer();
employeeBusinessLayer.UpdateEmployee(employee);
return RedirectToAction("Index");
}
return View(employee);
}
then i get error from my page: Procedure or function 'spUpdateEmployee' expects parameter '@Id', which was not supplied.然后我从我的页面收到错误:过程或 function 'spUpdateEmployee' 需要参数'@Id',但未提供。
I just show my problem by the main things and the rest I am sure fine.我只是通过主要内容和 rest 来展示我的问题,我确定没问题。 Can show me any solution to fix that error?
可以告诉我解决该错误的任何解决方案吗? I used Visual Studio 2019.
我使用了 Visual Studio 2019。
You can modify the UpdateEmployee method in EmployeeBusinessLayer class as follows您可以修改 EmployeeBusinessLayer class 中的 UpdateEmployee 方法如下
public class EmployeeBusinessLayer
{
public void UpdateEmployee(employee e)
{
string connectionStrings = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
using (SqlConnection con =new SqlConnection(connectionStrings))
{
SqlCommand cmd = new SqlCommand("spUpdateEmployee", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Id", e.ID);
cmd.Parameters.AddWithValue("@Name", e.Name);
cmd.Parameters.AddWithValue("@Gender", e.Gender);
cmd.Parameters.AddWithValue("@City", e.City);
cmd.Parameters.AddWithValue("@Salary", e.Salary);
cmd.Parameters.AddWithValue("@DateOfBirth", e.DateOfBirth);
con.Open();
cmd.ExecuteNonQuery();
}
}
}
My first answer on stack overflow.我对堆栈溢出的第一个答案。 Hope it helps.
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.