![](/img/trans.png)
[英]The update function doesn't work, SQL Server and ASP.NET MVC 5
[英]I want to update my SQL Server table using asp.net but it doesn't work
我有一个表Attendance
其中有EmployeeId,Date,Clock in和Attendance
列。 当用户单击时钟输入按钮时,时钟输出按钮将为空。 现在,我想创建一个Clock out按钮,用户可以在其中基于员工ID和日期更新其表。
string updateCommand = "UPDATE attendances SET ClockOut = @Time Where EmployeeId = @Id and Date = @Date";
String EmployeeConnectionString = "Data Source=USER-PC;Initial Catalog=1GCAttendanceManagementSystem;Integrated Security=True";
SqlConnection con2 = new SqlConnection(EmployeeConnectionString);
con2.Open();
TimeSpan time = new TimeSpan();
time.ToString();
cmd.Parameters.AddWithValue("@Id", txtID.Text);
cmd.Parameters.AddWithValue("@Date", DateTime.Now);
cmd.Parameters.AddWithValue("@Time", Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss tt")));
cmd.Connection = con2;
cmd.CommandText = updateCommand;
cmd.ExecuteNonQuery();
正如我在评论中所写,这与where子句的and Date = @Date
部分有关。
我认为可以肯定地说,数据库中没有记录具有DateTime.Now
的Date
列的值。 它应该是DateTime.Today
。
而且,正如AddWithValue()
所指出的那样,您不应使用AddWithValue()
,并且正如我在第一条评论中所暗示的那样,在处理实现IDisposable
接口的类的实例时,应使用using
语句。 所以这是我可能写的样子:
var updateCommand = "UPDATE attendances SET ClockOut = @Time Where EmployeeId = @Id and Date = @Date";
var EmployeeConnectionString = "Data Source=USER-PC;Initial Catalog=1GCAttendanceManagementSystem;Integrated Security=True";
using(var con2 = new SqlConnection(EmployeeConnectionString))
{
using(var cmd = new SqlCommand(updateCommand, con2))
{
cmd.Parameters.Add("@Id", SqlDbType.Int).Value = txtID.Text;
cmd.Parameters.Add("@Date", SqlDbType.Date).Value = DateTime.Today;
cmd.Parameters.Add("@Time", SqlDbType.Time)Value = DateTime.Now.TimeOfDay;
con2.Open();
cmd.ExecuteNonQuery();
}
}
请注意,我不得不猜测命令参数的数据类型,您可能需要更改它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.