如何使用C#在SQL中存储按钮单击历史记录时间

时间:2018-07-05 22:09:12

标签: c# sql sql-server

im使用C#与Telegram.Bot库一起使用 我有一个SQL数据库,我有一个从Datetime类型调用的PostDate 我试图限制每个用户每小时使用此if(true)1次,可以说用户单击了,然后在07/05/2018 17:45:00调用了按钮,并显示了带有“ Hey”的msgbox,用户尝试调用再次在07/05/2018嘿,我希望消息框显示有剩余时间,直到用户可以在07/05/2018 18:45再次调用“嘿”消息框。 :00带有“ hey”的msgbox将会再次弹出,并插入数据库,以便用户可以使用“ hey”的msgbox 我正在谈论的if条件在下面。

好的,第二次尝试为我的英语不好解释我抱歉,我会尽力做到

好的,所以我有一个称为Accs的表,并且有一个名为PostDate的Username和Datetime Column,并且在我的代码中有一个If语句,我想要msgbox(“ Hey”)可以被用户每小时1次调用一次,并且下次用户可以调用msgbox时将其写入ecid的PostDate,并且如果用户要求msgbox(“ Hey”)和小时没有过去,则剩余时间为messagebox,直到他可以再次调用msgbox(“嘿”)

using (var GetLastPost = new SqlCommand("SELECT PostDate FROM Accs2 WHERE Username LIKE @user1", con))
{
    GetLastPost.Parameters.AddWithValue("@user1", ecid);
    con.Close();
    con.Open();
    using (var LastReader = await GetLastPost.ExecuteReaderAsync())
    {
        if (!LastReader.HasRows || !LastReader.Read())
        {

        }
        else
        {
            var DataTime = DateTime.Parse(LastReader["PostDate"].ToString());
            //   SqlDateTime sqlNow = new SqlDateTime(DataTime);
            SqlDateTime sqler = new SqlDateTime(DateTime.UtcNow);
            TimeSpan difference = DateTime.UtcNow.Subtract(DataTime);

            if (difference.TotalMinutes <= 60)
            {
                con.Close();
                con.Open();
                using (var PostCheck = new SqlCommand("UPDATE Accs2 set PostDate =  '" + sqler.Value + "' where Username like '%" + ecid + "%'", con))
                {
                    MessageBox.Show("Hey");
                    await PostCheck.ExecuteNonQueryAsync();
                }
                con.Close();
            }
            else
            {
                MessageBox.Show("You can use Hey more " + sqler.ToString() + "Minutes");
            }
            con.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

需要注意的三件事:

  1. 您需要知道用户最后一次说“嘿”的时间,lastPost = SELECT TOP 1 PostDate FROM Accs2 WHERE Username = "abcd" ORDER by PostDate DESC

  2. 如果要允许用户每小时发送1条消息,请使用

if ((DateTime.UtcNow - lastPost).TotalMinutes >= 60) 
{
    // allow to say "Hey" 
}
else 
{
     // stop
}
  1. 您可以按照MSDN sample来更有效地使用SqlConnection:
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // your code here 
}