c# - 如何找出对 SQL 数据库的最后更改是什么?

标签 c# mysql

我有一个运行更新查询的程序。出于测试目的,查询是固定的,只是 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/

相关文章:

mysql - 计算表中两组不同的行,然后将它们相除

c# - 最新日期的 Lambda 表达式

php - 在 mysql 表中使用相同的 FK 更新多个值

mysql - 在 MySQL SELECT 查询中,我可以在 WHERE 规范中使用我的 "AS column"吗?

c# - 我可以从内部禁用滚动查看器吗?

php - 使用 jquery-select2 动态依赖下拉列表

mysql - SQL 到 outfile - 文件存储在哪里? (MySQL, Windows)

c# - EF Code First,同一对象的两个导航属性

c# - 在 x64 下的 WinForms webbrowser 控件中显示 pdf

c# - 在生成的 IL 代码中,缺少一些行。 in between 行执行什么任务?