2011-09-27 72 views
0

我有一个MySQL数据库table.In数据库列有一些同类型data.I的希望为不同类型的data.Here相同类型的数据都的指定计时器同样timer.For例如100,100,100具有定时器1,102102102有定时器等二十多个国家我也想要更新的特定2列,此更新将使用这些分配timer.Here是我的代码可以继续在每行每秒,更新数据库列每秒使用定时器在C#

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();   
} 

它不工作。做这件事的最好方法是什么?任何人都可以帮助我吗?任何帮助都可以很好地应用。

+0

它是如何工作的? –

+0

我想,在一组秒钟一行将更新,但它在一秒钟内更新所有的行@austin – sumona

回答

0

为了在同一时间只更新单列你需要一个LIMIT 1条款添加到您的SQL查询。它会限制可更新的行数。

所以你SqlCommand应该是:

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

只更新第1行,但我想所有的行会更新这个更新将每行以每秒@waqas – sumona

+0

不,它赢得了;吨更新仅第一行,但“第一”行符合WHERE条件,我想你需要添加sendingstatus <>“更新”太 – Waqas

+0

遗憾,但是这种更新在1秒1行,但这个1个更新的行会出4秒后4秒后4行应该更新。你可以清楚我的概率是什么?sendstatus的意思是? – sumona

0

我想我找到了我的problem.The的问题是在计时器declaration.I设置0期,并且由于时间1000.For这TimerAction永远不会调用again.And也问题在查询。并且说明不工作的原因。它应该写成:

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