我已经成功地将我的项目从 odbc.datareader 切换到 mysql.datareader。问题是对于第一个/odbc datareader),AffectedRows 属性即使是纯查询也能正确检索行数。但它不适用于 mysql.datareader,然后是 -1。 所以我看不到如何检索行数,即“结果 View ”。 编辑:我知道它的前向阅读器,但我不明白以下内容:如果在 DBreader=command.ExecuteRader() 行放置一个断点,我可以看到 DBreader 在结果 View 中具有与行一样多的对象应该。怎么跑完就知道了? 谢谢
最佳答案
DataReader 不包含行数的原因是它的计算成本非常高。例如,假设您执行一个查询,返回今年输入但未删除的采购订单:
SELECT * FROM PurchaseOrders
WHERE PurchaseDt > '2009-01-01'
AND IsDeleted = 0
然后您将此查询与 DataReader 一起使用并读出前 10 行。 SQL Server 在请求时将行“流”到客户端。每当您请求另一行时,SQL Server 将执行查询的下一步。因此,在您实际读出所有行之前,即使 SQL Server 也不知道总行数。
关于c# - 如何计算 MySqlDataReader 中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1733825/