在asp.net中安排更新日期
本文关键字:更新 日期 asp net | 更新日期: 2023-09-27 18:01:47
我想在asp.net (global.asax)中每24小时运行一次。我只是想检查当前日期和日期,这是存储到我的数据库一个接一个。如果日期小于当前日期,则在其中添加7天。
我只是在尝试,但没有关闭阅读器更新是不可能的。这种错误每次都出现。
private static void Task()
{
String CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
DateTime Newdate;
String ct = DateTime.Now.ToString("dd/MM/yyyy");
DateTime CT = DateTime.ParseExact(ct, "dd/MM/yyyy", CultureInfo.InvariantCulture);
SqlCommand cmd1 = new SqlCommand("select Date from tblInsertDate", con);
cmd1.ExecuteNonQuery();
SqlDataReader rdr = cmd1.ExecuteReader();
while (rdr.Read())
{
DateTime dt = DateTime.ParseExact(rdr["Date"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
int result = DateTime.Compare(dt, CT);
if (result < 0)
{
Newdate = dt.AddDays(7);
SqlCommand cmd2 = new SqlCommand("update tblInsertDate set Date=@Newdate", con);
cmd2.Parameters.AddWithValue("@Newdate", Newdate);
cmd2.ExecuteNonQuery();
}
}
}
}
我在全局中制作时间表。在计时器的帮助下。
您在reader.read()中使用相同的连接对象编写了更新查询。这意味着读取器在读取数据时将有一个打开的连接,同时另一个命令正在尝试使用相同的连接更新数据。您可以通过在同一循环中创建另一个连接对象或在reader关闭后创建相同的连接对象来修复此问题。我做了一个小小的改变,试着这样做:-,将更新查询置于阅读器循环之外
private static void Task()
{
String CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
DateTime Newdate;
String ct = DateTime.Now.ToString("dd/MM/yyyy");
DateTime CT = DateTime.ParseExact(ct, "dd/MM/yyyy", CultureInfo.InvariantCulture);
SqlCommand cmd1 = new SqlCommand("select Date from tblInsertDate", con);
cmd1.ExecuteNonQuery();
SqlDataReader rdr = cmd1.ExecuteReader();
List<DateTime> dates=new List<DateTime();
while (rdr.Read())
{
DateTime dt = DateTime.ParseExact(rdr["Date"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
int result = DateTime.Compare(dt, CT);
if (result < 0)
{
Newdate = dt.AddDays(7);
dates.Add(Newdate);
}
}
foreach(DateTime dt in dates)
{
SqlCommand cmd2 = new SqlCommand("update tblInsertDate set Date=@Newdate", con);
cmd2.Parameters.AddWithValue("@Newdate", dt);
cmd2.ExecuteNonQuery();
}
}
}