2011-09-27 71 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);