我已成功将项目从odbc.datareader切换到mysql.datareader.问题是,使用第一个/ odbc datareader),AffectedRows属性即使在纯查询时也能正确检索行数.但它不能与mysql.datareader一起使用,那么它就是-1.
所以我看不出如何检索行数的方式,即“结果视图”.
编辑:我知道它只是前向阅读器,但我不明白的是:如果一个断点到DBreader = command.ExecuteRader()行,我可以看到DBreader在结果视图中有多少个对象作为行应该.它是如何在跑步后才知道的?
谢谢
解决方法:
DataReader不包含rowcount的原因是计算起来非常昂贵.例如,假设您执行的查询返回今年输入但未删除的采购订单:
SELECT * FROM PurchaseOrders
WHERE PurchaseDt > '2009-01-01'
AND IsDeleted = 0
并且您将此查询与DataReader一起使用并读出前10行. SQL Server在请求它们时将“流”行“流”到客户端.每当您要求另一行时,SQL Server将执行查询的下一步.因此,在您实际读出所有行之前,SQL Server甚至都不知道总行数.
标签:c,mysql,datareader
来源: https://codeday.me/bug/20190622/1259636.html