我有一个表列作为状态(Varchar,记录"付费" /"未付费"仅)和另一列作为nextDateOfPay(datetime,记录日期)。我需要更新此状态列为未付的记录,当日期(当前日期)通过nextDateOdPay列中的日期时为付费。我需要为表中的每一行重复此更新。主键是Id列(整数)。 我不知道从哪里开始,我是否需要使用T-sql或者如果我必须使用sql agent job。我想知道是否有一个简单的解决方案我可以在程序中编写。谢谢你这么多提前! 到目前为止的代码是,
dateTimePicker3.Value = DateTime.Now;
textBox12.Enabled = false;
string newstat;
string query = "select Id,nextDateOfPay from gymTb where status='Paid'";
SqlConnection cn = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(query, cn);
DateTime x = DateTime.Now;
DateTime y;
if (cn.State.ToString() == "Closed")
{
cn.Open();
}
try
{
object dtx = cmd.ExecuteScalar();
y = Convert.ToDateTime(dtx);
int result = DateTime.Compare(x, y);
if (result >= 0)
newstat = "Unpaid";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 0 :(得分:3)
一个简单的UPDATE查询可以:
UPDATE gymTb SET status='Unpaid'
WHERE status='Paid' AND nextDateOfPay <= getdate()
您可以通过手动按下按钮或使用定时器逻辑触发您的应用程序。
要使其每天运行,并且独立于您的应用程序,您可以将UPDATE语句放在SQL Server代理中的定期作业中。有关详细信息,请参阅此处:
how to schedule a job for sql query to run daily?