2013-07-23 36 views
4

我有這樣一個查詢:即使沒有更新,ExecuteNonQuery爲什麼返回1?

UPDATE messages SET Unread = 'N' WHERE id= '6' 

要閱讀受影響的行,我用的ExecuteNonQuery()價值,但它總是返回1,即使發生任何變化。看到相同的問題here。這是一個錯誤還是這種行爲是正常的?

+0

'ExecuteNonQuery'返回多少行* *的影響,不會改變。是否有id = 6的消息? – CodingIntrigue

+0

要重述其他人所說的話,'... set name ='foo'where name ='foo''影響name ='foo'的記錄,儘管新值與舊值沒有區別。 – Tim

+0

嗯,那麼如何才能真正受到影響?行? – rtuner

回答

7

對於ExecuteNonQuery要返回1必須是有記錄WHERE id = '6'。現在,如果你只想更新行如果值是不同的,那麼更改查詢:

UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N' 

如果要運行查詢和Unread價值已經'N'然後它會返回0行。

5

ExecuteNonQuery()UPDATE查詢返回的值是通過行的數量實際更新的更新語句的WHERE子句和匹配的行數。所以它是有道理的..

請參閱this鏈接和你所有的疑慮將被清除。

相關問題