我有一个运行更新查询的程序。出于测试目的,查询是固定的,只是 UPDATE table SET field = 'field_name' WHERE other_field = 'id_field_value'
。我正在使用 MySqlCommand
并使用 sqlCommand.ExecuteNonQuery()
执行查询。但是,我一遍又一遍地运行它,它每次都会返回 1 行更改。如预期的那样,在 MySQL GUI 工具中运行相同的查询会返回受影响的 0 行。找出 sql 数据库发生哪些变化的最佳方法是什么?
我的问题已被标记为重复 - 我不是在问如何获取受 sql 查询影响的 # 行。我在问如何找出当查询继续返回受影响的 1 行时对 sql 表进行了哪些更改,而我希望它返回 0。
没关系,我的问题在重复问题 (Get affected rows on ExecuteNonQuery) 的评论中得到了回答。事实证明 ExecuteNonQuery() 不返回实际修改的行数,只返回可以修改的“可能”行数。坦率地说,这用处不大。
最佳答案
默认情况下,Connector/NET 中的 MySqlCommand.ExecuteNonQuery
返回找到的行数,无论它们是否更新(即使 the documentation for DbCommand
说“对于 UPDATE、INSERT 和 DELETE语句,返回值是受命令影响的行数”)。
要获得所需的行为,请在连接字符串 (reference) 中指定 UseAffectedRows=True
,或设置 MySqlConnectionStringBuilder.UseAffectedRows = true;
。
关于c# - 如何找出对 SQL 数据库的最后更改是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48528852/