检查条件C#后如何更新比较日期的db列

时间:2016-12-02 12:11:50

标签: c# sql-server

我有一个表列作为状态(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);
}

1 个答案:

答案 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?