必须找出现在是否是数据库中的更改

  • 本文关键字:数据库 是否是 c# datetime
  • 更新时间 :
  • 英文 :

这样

,我在数据库中没有日期,如果它小于我们现在的时间/日期,那么它必须进入并刷新使用意志排名 2。例如,这意味着我们有。现在是时候了,如果它不合适,那么数据库里的人就不应该进去做任何事情。

这意味着如果日期看起来像这样,它是不是太旧了。

2015/3/15 09:34:42 AM (现在是) 和 3/15/2015 04:34:42 AM

所以它必须进入代码来更新用户以获得排名 2

while (readerBrugere.Read())
  {
     string brugerid = readerBrugere["id"].ToString();
     DateTime brugerdato = Convert.ToDateTime(readerBrugere["trydato"].ToString());
     conn1.Close();
     if (Convert.ToDateTime(DateTime.Now.ToString("ddmmyyyyHHmmss")) > Convert.ToDateTime(brugerdato))
     {
         int rankid = 2;
         cmd1.CommandText = "UPDATE brugere SET rank = @rank WHERE Id = @brugerid;";
         cmd1.Parameters.AddWithValue("@rank", rankid);
         cmd1.Parameters.AddWithValue("@brugerid", brugerid);
         conn1.Open();
         cmd1.ExecuteNonQuery();
         conn1.Close();
     }
  }

它只会在与我在一起的时间比数据库中的时间正确时运行内容

你的问题文本很难破译,但看看代码,我可以建议一个大大改进的版本:

while (readerBrugere.Read())
{
     //if these columns cannot be null, you should be able to use a simple cast
     int brugerid = (int)readerBrugere["id"];
     DateTime brugerdato = (DateTime)readerBrugere["trydato"];
      //don't close your database connection here
     //These values are *already* datetimes. There's not need to convert to datetime
     // and *especially* no need to convert to strings to compare them
     if (DateTime.Now > brugerdato)
     {
         // the "2" is a constant: just code it into the query that way
         string sql = "UPDATE brugere SET rank = 2 WHERE Id = @brugerid;";
         //or maybe you wanted this instead:
         string sql = "UPDATE brugere SET rank = rank + 1 WHERE Id = @brugerid;";
         //AddWithValue() kinda sucks somtimes. I prefer to do it like this instead:
         cmd1.Parameters.Add("@brugerid", SqlDbType.Int).Value = brugerid;
         //don't use the same connection as you did for the outer query:
         using (var cn2 = new SqlConnection(conn1.ConnectionString))
         using (var cmd2 = new SqlCommand(sql, cn2))
         {
             cmd2.ExecuteNonQuery();
         }
     }
}

最后,所有这些都没有实际意义,因为我希望您可以使用单个查询在数据库中完成整个过程:

UPDATE brugere
SET rank = rank + 1
WHERE trydato <= current_timestamp AND brugerdi IN 
   ( 
     ...existing query goes here, but only select the brugerdi column ... 
   )

相关内容

最新更新