我有一个类似的查询:
UPDATE messages SET Unread = 'N' WHERE id= '6'
要读取受影响的行,我使用ExecuteNonQuery()
的值,但即使没有更改,它也始终返回1。看到同样的问题here。这是一个错误还是这种行为正常?
答案 0 :(得分:7)
要让ExecuteNonQuery
返回1
,必须一条记录WHERE id = '6'
。现在,如果您只想更新该行,如果值不同,请更改查询:
UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N'
如果您要运行该查询且Unread
的值已经'N'
,那么它将返回0
行。
答案 1 :(得分:5)
UPDATE 查询的ExecuteNonQuery()
返回值是update语句的where子句匹配的行数, NOT 行数实际更新。所以它确实有意义..
请参阅this链接,您的所有疑问都将被清除。
答案 2 :(得分:1)
您应该使用连接字符串选项'使用受影响的行'。设置为true时,它将报告已更改的行而不是找到的行。
请参阅https://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html