我有一个像这样的查询:
UPDATE messages SET Unread = 'N' WHERE id= '6'
要读取受影响的行,我使用 的值ExecuteNonQuery()
,但即使没有任何更改,它也始终返回 1。在这里看到同样的问题。这是一个错误还是这种行为正常?
ExecuteNonQuery
退货必须1
有记录。_ 现在,如果您只想在值不同时更新行,请更改查询:WHERE id = '6'
UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N'
如果您要运行该查询并且值Unread
已经是,'N'
那么它将返回0
行。
UPDATE查询的返回值ExecuteNonQuery()
是更新语句的 where 子句匹配的行数,而不是实际更新的行数。所以说的有道理。。
请参考此链接,您的所有疑问都将被清除。
您应该使用连接字符串选项“使用受影响的行”。当设置为 true 时,它将报告更改的行而不是找到的行。
请参考https://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html