【发布时间】:2020-03-28 11:02:16
【问题描述】:
我的 BorrowedBook 表中有两个日期数据类型(dateBorrowed 和 dueDate)和一个状态列。现在,当图书在到期日之后没有归还时,我想自动将状态从“未归还”更新为状态=“过期”。
我试过了
public void DueDate()
{
if (frmissue.dtIssueDate.Value > frmissue.dtDueDate.Value)
{
cn.Open();
cm = new SqlCommand("UPDATE tblBorrowedBook SET status = 'Overdue' WHERE borrowID = @borrowID", cn);
cm.Parameters.AddWithValue("@borrowID", lblID.Text);
cm.ExecuteNonQuery();
cn.Close();
}
}
但它不会更新任何内容。我确实想尝试通过 SQL 查询来做到这一点,但我不知道如何开始。
我也尝试过类似的方法:
frmBooksOnHand frm = new frmBooksOnHand(this);
cn.Open();
cm = new SqlCommand("SELECT dueDate FROM tblBorrowedBook AS dueDate", cn);
dr = cm.ExecuteReader();
while (dr.Read())
{
dtDueDateTime.Value = Convert.ToDateTime(dr["dueDate"]);
}
dr.Close();
cn.Close();
if (dtDueDateTime.Value > DateTime.Now)
{
cn.Open();
cm = new SqlCommand("UPDATE tblBorrowedBook SET status = 'Overdue'", cn);
cm.ExecuteNonQuery();
cn.Close();
}
我需要什么:
dateBorrowed > dueDate(来自数据库值)
更新状态 = '过期'
【问题讨论】:
-
如果 borrowID 列是 int 类型,那么
cm.Parameters.AddWithValue("@borrowID", int.Parse(lblID.Text)); -
@AJITH 我已经尝试过了,我发现 dtIssueDate.Value 和 dtDueDate.Value 不是数据库中的值
-
有没有办法用查询来做这个?
-
"有没有办法用查询来做这件事?"您甚至不应该将其存储在表格中。创建一个将当前时间与到期时间进行比较的视图,并基于此输出状态。然后状态会“自动”更新。
标签: c# sql-server winforms