为什么即使没有更新,ExecuteNonQuery也会返回1?

rtu*_*ner 4 .net c# mysql

我有一个查询:

UPDATE messages SET Unread = 'N' WHERE id= '6'
Run Code Online (Sandbox Code Playgroud)

要读取受影响的行,我使用值ExecuteNonQuery(),但即使没有更改,它也始终返回1.在这里看到了同样的问题.这是一个错误还是这种行为正常?

Mik*_*oud 7

对于ExecuteNonQuery返回1有一定的纪录WHERE id = '6'.现在,如果您只想更新行,如果值不同,则更改查询:

UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N'
Run Code Online (Sandbox Code Playgroud)

如果您要运行该查询并且值Unread已经是,'N'那么它将返回0行.


Mic*_* DN 5

的返回值ExecuteNonQuery()上的UPDATE查询是UPDATE语句的where子句和匹配的行数不是实际更新的行数.所以它确实有意义..

请参考此链接,您的所有疑问将被清除.