4

我有一个像这样的查询:

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

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

4

3 回答 3

7

ExecuteNonQuery退货必须1有记录。_ 现在,如果您只想在值不同时更新行,请更改查询:WHERE id = '6'

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

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

于 2013-07-23T12:26:44.037 回答
5

UPDATE查询的返回值ExecuteNonQuery()是更新语句的 where 子句匹配的行数,而不是实际更新的行数。所以说的有道理。。

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

于 2013-07-23T12:28:06.900 回答
1

您应该使用连接字符串选项“使用受影响的行”。当设置为 true 时,它​​将报告更改的行而不是找到的行。

请参考https://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html

于 2017-08-30T14:46:37.473 回答