使用c#中的计时器每秒更新每行数据库列数

时间:2011-09-27 04:03:46

标签: c# mysql timer

我有一个MySql Db表。在db列中有一些相同类型的数据。我想为不同类型的数据分配定时器。这些类型的数据具有相同的定时器。例如100,100,100有timer1,102,102,102有timer2我还想更新特定的2列,这个更新将使用那些分配的计时器每秒继续每行。这是我的代码,

 void PrepareTimers(List<int> _dataValues)
 {
     foreach (int dataValue in _dataValues)
     {
        ThreadingTimer timer = new ThreadingTimer(TimerAction, dataValue, 1000, 0);

     }
 }

 void TimerAction(object flag)
 {
    string myconstring = "SERVER=localhost;" + "DATABASE=alicosms;" + "UID=root;" + "PASSWORD=;";
    MySqlConnection mycon = new MySqlConnection(myconstring);
    string u = "UPDATED";
    mycon.Open();
    MySqlCommand cmd = new MySqlCommand("UPDATE sms_data_bankasia set flag= @flag * 2 , sendingstatus = '" + u + "' WHERE flag = @flag", mycon);
    MySqlParameter param = new MySqlParameter();
    param.ParameterName = "@flag";
    param.Value = flag;
    cmd.Parameters.Add(param);
    cmd.ExecuteNonQuery();        
}

它无法正常工作。最好的方法是什么?任何人都可以帮助我吗?任何帮助都可以很有帮助。

2 个答案:

答案 0 :(得分:0)

为了一次只更新一行,您需要在sql查询中添加LIMIT 1子句。它将限制可以更新的行数。

所以你的SqlCommand应该是:

MySqlCommand cmd = new MySqlCommand("UPDATE sms_data_bankasia set flag= @flag * 2 , sendingstatus = '" + u + "' WHERE flag = @flag LIMIT 1", mycon);

答案 1 :(得分:0)

我想我发现了我的问题。问题出现在计时器声明中。我设置了0期和到期时间1000.因为这个TimerAction再也没有调用过。而且查询中也有问题。而且我不想工作的原因是什么它应该写成,

ThreadingTimer timer = new ThreadingTimer(TimerAction, dataValue, 0, 1000);