簡體   English   中英

我想使用asp.net更新我的SQL Server表,但是它不起作用

[英]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.NowDate列的值。 它應該是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM