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