C# 必须找出现在的变化是否比数据库中的变化大

C# 必须找出现在的变化是否比数据库中的变化大,c#,datetime,C#,Datetime,这是因为我在数据库中没有日期,如果它小于我们现在拥有的时间/日期,那么它必须进入并刷新will rank 2的使用。这意味着我们有,例如。现在是时候了,如果不合适的话,他就应该在数据库中,所以数据库不应该进去做任何事情 也就是说,如果日期看起来像这样,那就太旧了 2015年3月15日09:34:42(现在)和2015年3月15日04:34:42 因此,它必须进入代码中更新用户以获得排名2 while (readerBrugere.Read()) { string brugerid

这是因为我在数据库中没有日期,如果它小于我们现在拥有的时间/日期,那么它必须进入并刷新will rank 2的使用。这意味着我们有,例如。现在是时候了,如果不合适的话,他就应该在数据库中,所以数据库不应该进去做任何事情

也就是说,如果日期看起来像这样,那就太旧了

2015年3月15日09:34:42(现在)和2015年3月15日04:34:42

因此,它必须进入代码中更新用户以获得排名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 ... 
   )
更新brugere
设置秩=秩+1

其中trydato
,这样跳转到my if if是用户的日期就完全是胡说八道了。请更正它,以便我们能够理解您的需要。其中有一些毫无意义的DateTime转换。DateTime到字符串到DateTimenothing@JoelCoehoorn我现在已经这么做了,希望更好。是的,一个男人。它现在适合我,我没有问题,!!:D谢谢你的帮助!!