我有這樣一個查詢:即使沒有更新,ExecuteNonQuery爲什麼返回1?
UPDATE messages SET Unread = 'N' WHERE id= '6'
要閱讀受影響的行,我用的ExecuteNonQuery()
價值,但它總是返回1,即使發生任何變化。看到相同的問題here。這是一個錯誤還是這種行爲是正常的?
我有這樣一個查詢:即使沒有更新,ExecuteNonQuery爲什麼返回1?
UPDATE messages SET Unread = 'N' WHERE id= '6'
要閱讀受影響的行,我用的ExecuteNonQuery()
價值,但它總是返回1,即使發生任何變化。看到相同的問題here。這是一個錯誤還是這種行爲是正常的?
對於ExecuteNonQuery
要返回1
有必須是有記錄WHERE id = '6'
。現在,如果你只想更新行如果值是不同的,那麼更改查詢:
UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N'
如果要運行查詢和Unread
價值已經'N'
然後它會返回0
行。
的ExecuteNonQuery()
上UPDATE查詢返回的值是通過不行的數量實際更新的更新語句的WHERE子句和匹配的行數。所以它是有道理的..
請參閱this鏈接和你所有的疑慮將被清除。
您應該使用連接字符串選項「使用受影響的行」。設置爲true時,它將報告已更改的行而不是已發現的行。
請參考https://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html
'ExecuteNonQuery'返回多少行* *的影響,不會改變。是否有id = 6的消息? – CodingIntrigue
要重述其他人所說的話,'... set name ='foo'where name ='foo''影響name ='foo'的記錄,儘管新值與舊值沒有區別。 – Tim
嗯,那麼如何才能真正受到影響?行? – rtuner